Bonjour
Je travaille sur un fichier et j’ai absolument besoin de votre aide.
Ce fichier sera constitué de feuilles (une centaines) qui se présentent comme des imprimés individuels. Nous retrouvons des données comme le nom en B2 le prénom en B4 l’adresse en D3, des dates de RDV en F….… Toutes les fiches sont identiques. Les utilisateurs (collègues) trouvent la forme de l’imprimé plus facile à remplir et à visualiser les informations qu’un tableur.
Comme il s’agit de données par feuilles, je souhaitent tout de même rassembler certaines informations dans un seul tableau récapitulatif (ex nom, prénom, dates rdv….sur une même ligne)
J’ai une macro qui copie automatiquement le nom de chaque feuille dans la première colonne de mon tableau récapitulatif.
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
i = 2
For Each ws In Application.Worksheets
If ws.Name <> "LISTING" And ws.Name <> "Fiche type" Then
'Sheets("LISTING").Range("A" & i) = ws.Name
ActiveSheet.Hyperlinks.Add Anchor:=Range("A" & i), Address:="", SubAddress:= _
"'" & ws.Name & "'!A1", TextToDisplay:=ws.Name
i = i + 1
End If
Next ws
Application.Calculation = xlCalculationAutomaticCalculate
Calculate
Application.ScreenUpdating = True
End Sub
Sub Snamelist()
Dim i As Integer
Range("A2").Select
For i = 2 To Sheets.Count
ActiveCell.Value = Sheets(i).Name
ActiveCell.Offset(1, 0).Select
Next i
End Sub
Pour faciliter le travail j’ai trouvé une procédure que j’ai mis dans le code de la feuille qui m’enregistre le nom de la personne (monsieur X) en tant que nom de feuille
Sub onglet1()
’
’ ActiveSheet.Name = Range(« B3 »).Value
End Sub
Ainsi mon tableau récapitulatif comporte en première colonne le nom de feuille (soit monsieur X).
Je souhaiterai copier sur la même ligne le prénom de monsieur x ainsi que d’autres éléments se trouvant dans la feuille « imprimé ».
Je n’arrive pas à trouver de solution et cela me pose un réel problème. Pensez vous avoir une solution.
Si vous avez une solution pour un autre problème je serais heureux : comme il s’agit de feuilles identiques, il suffit de les copier pour les reproduire en Feuil 1 Feuil 2…… Or comme j’ai installé un code dans la feuille pour que le nom de l’onglet soit celui du nom de la personne, je rencontre un problème lors de la copie car j’ai 2 onglets avec le même nom. Existe-t-il une solution ?
Je vous remercie pour vos réflexions et propositions
Bonjour,
tu dis:
et plus bas
’ ActiveSheet.Name = Range(“B3”).Value
Là, je ne suis plus
sinon
ActiveSheet.Name = Range(“B2”).Value & " " &Range(“B4”).Value
Re,
un petit exemple à adapter à ta sauce
Sub Recap()
'Déclaration des variables
Dim ws As Worksheet
Dim nouveauNom As String
Dim feuilleExiste As Boolean
Dim i%
'Efface les anciennes données
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.ClearContents
Range("A2").Select
'affectation variables
i = 2 'N° ligne pour extraire
feuilleExiste = False 'déclare que la feuille n'existe pas
On Error GoTo 1 'gestion erreur si le nom de l'onglet existe
'boucle sur les onglets
For Each ws In ActiveWorkbook.Sheets
If ws.Name <> "LISTING" And ws.Name <> "Fiche type" Then 'sauf les onglets LISTING et Fiche type
nouveauNom = ws.Range("B2") & " " & ws.Range("B4") 'Affecte la variable nouveau nom avec le nom et le prénom des cellules de la feuille
If nouveauNom = ws.Name Then 'teste si la feuille est renommée avec le nouveau nom
feuilleExiste = True
Exit For
Else 'sinon
ws.Name = nouveauNom 'renomme l'onglet
Sheets("LISTING").Range("A" & i) = ws.Name 'colle le nom et prenom en A2
ActiveSheet.Hyperlinks.Add Anchor:=Range("A" & i), Address:="", SubAddress:= _
"'" & ws.Name & "'!A1", TextToDisplay:=ws.Name ' Le transforme en lien hypertexte
Sheets("LISTING").Range("B" & i) = ws.Range("D3") 'colle l'adresse
Sheets("LISTING").Range("C" & i) = CDate(ws.Range("F3")) 'colle la date au format date
i = i + 1 'ajoute 1 à la variable i - augmente d'une ligne
End If
End If
Next ws
1: 'en cas d'erreur
If feuilleExiste = True Then
MsgBox "Le nom existe déjà"
Else
MsgBox "Cet onglet " & ws.Name & Chr(10) & " existe déjà avec le nom " & ws.Range("B2") & " " & ws.Range("B4")
End If
End Sub
Pierrick.xlsm (25,7 Ko)
1 « J'aime »
bonsoir Mimimathy et merci pour votre proposition.
J’ai tenté une adaptation de votre travail sur mon classeur. J’ai vite trouver les limites de mes compétences et l’intérêt pour moi de les développer. En conclusion, je n’ai pas réussis à l’adapter.
je vous mets en copie le classeur en espérant que vous pourrez mieux comprendre et m’accompagner dans cette réalisation. Je mets une seule feuille exemple pour que vous puissiez mieux analyser le problème. L’objectif qu’à partir de cette fiche, il soit possible de compléter automatiquement la feuille LISTING
Dans les colonnes P à AV j’ai remonter les valeurs des cellules à remplir afin de compléter plus facilement le LISTING. Je ne sais pas si cela est utile. Par la suite je souhaite pourvoir faire des compilation de données. Je ne suis par sûr que cela fonctionne avec les listes déroulantes. Qu’en pensez vous ?
En tout cas, encore merci pour votre attention
bonjour et merci pour votre proposition. Le programme ramène bien des informations. Votre commentaires en vert sont super utiles pour déchiffrer les codes.
Par contre le “recap” fait que l’actualisation efface les lignes inscrites alors que l’objectif est de les cumuler dans le listing.
pensez vous qu’il existe une solution
Bonjour,
Remplace par cette macro
Sub Recap()
'Déclaration des variables
Dim ws As Worksheet
Dim nouveauNom As String
Dim feuilleExiste As Boolean
Dim i%
'affectation variables
i = Range("A" & Rows.Count).End(xlUp).Row + 1 'n° de la dernière ligne vide de la colonne A
feuilleExiste = False 'déclare que la feuille n'existe pas
On Error GoTo 1 'gestion erreur si le nom de l'onglet existe
'boucle sur les onglets
For Each ws In ActiveWorkbook.Sheets
If ws.Name <> "LISTING" And ws.Name <> "liste déroul" Then 'sauf les onglets LISTING et liste déroul
nouveauNom = ws.Range("B2") & " " & ws.Range("D2") 'Affecte la variable nouveau nom avec le nom et le prénom des cellules de la feuille
If nouveauNom = ws.Name Then 'teste si la feuille est renommée avec le nouveau nom
feuilleExiste = True
Exit For
Else 'sinon
ws.Name = nouveauNom 'renomme l'onglet
Sheets("LISTING").Range("A" & i) = ws.Range("B2") 'colle le nom
ActiveSheet.Hyperlinks.Add Anchor:=Range("A" & i), Address:="", SubAddress:= _
"'" & ws.Name & "'!A1", TextToDisplay:=ws.Name ' Le transforme en lien hypertexte
Sheets("LISTING").Range("B" & i) = ws.Range("D2") 'colle le Prénom
Sheets("LISTING").Range("C" & i) = ws.Range("B3") 'colle l'adresse
Sheets("LISTING").Range("D" & i) = ws.Range("B4") 'colle Tél1
Sheets("LISTING").Range("E" & i) = ws.Range("D4") 'colle Tél2
Sheets("LISTING").Range("F" & i) = ws.Range("B3") 'colle Email
Sheets("LISTING").Range("G" & i) = ws.Range("B6") 'colle Age
Sheets("LISTING").Range("H" & i) = ws.Range("D6") 'colle Sexe
Sheets("LISTING").Range("I" & i) = ws.Range("B8") 'colle Suivi par
Sheets("LISTING").Range("J" & i) = ws.Range("B31") 'colle début intervention
Sheets("LISTING").Range("K" & i) = ws.Range("B33") 'colle date RdV1
Sheets("LISTING").Range("L" & i) = ws.Range("B36") 'colle date RdV2
Sheets("LISTING").Range("M" & i) = ws.Range("G10") 'colle date RdV3
Sheets("LISTING").Range("N" & i) = ws.Range("G15") 'colle date RdV4
Sheets("LISTING").Range("O" & i) = ws.Range("G21") 'colle date RdV5
Sheets("LISTING").Range("P" & i) = ws.Range("G26") 'colle date RdV6
Sheets("LISTING").Range("Q" & i) = ws.Range("G33") 'colle date RdV7
Sheets("LISTING").Range("R" & i) = ws.Range("G41") 'colle date FIN INTERV
Sheets("LISTING").Range("S" & i) = ws.Range("A12") 'colle gestion conflit
Sheets("LISTING").Range("T" & i) = ws.Range("B12") 'colle précision
Sheets("LISTING").Range("U" & i) = ws.Range("D11") 'colle them princ
Sheets("LISTING").Range("V" & i) = ws.Range("A15") 'colle logement
Sheets("LISTING").Range("W" & i) = ws.Range("B15") 'colle origine demande
Sheets("LISTING").Range("X" & i) = ws.Range("B16") 'colle nature problème
Sheets("LISTING").Range("Y" & i) = ws.Range("D15") 'colle type logement
Sheets("LISTING").Range("Z" & i) = ws.Range("D14") 'colle théma princ
Sheets("LISTING").Range("AA" & i) = ws.Range("A19") 'colle insalubrité
Sheets("LISTING").Range("AB" & i) = ws.Range("B19") 'colle nature problème
Sheets("LISTING").Range("AC" & i) = ws.Range("D18") 'collethéma princ
Sheets("LISTING").Range("AD" & i) = ws.Range("B22") 'colle public A
Sheets("LISTING").Range("AE" & i) = ws.Range("B23") 'colle intervention
Sheets("LISTING").Range("AF" & i) = ws.Range("B24") 'colle orientation
Sheets("LISTING").Range("AG" & i) = ws.Range("B27") 'colle accomp B
Sheets("LISTING").Range("C" & i) = CDate(ws.Range("F3")) 'colle la date au format date
i = i + 1 'ajoute 1 à la variable i - augmente d'une ligne
End If
End If
Next ws
1: 'en cas d'erreur
If feuilleExiste = True Then
MsgBox "Le nom existe déjà"
End If
End Sub
merci pour cette nouvelle proposition. Le programme ramène les informations . Il me semble qu’il bloque sur la première feuille, à gauche du listing. En changeant le nom de la 1ère feuille, le listing ramène les informations mais en conservant les lignes précédentes de cette même feuille mais avec un nom différent.
J’ai changé les autres feuilles de place. C’est toujours la 1ère à droite du listing qui est exploité
listing_activite_médiation essais 3.xlsm (78,0 Ko)
Re,
Je regarderais cela demain matin, avec attention 
1 « J'aime »
Bonjour,
A tester avec mes modifications
listing_activite_médiation essais 3.xlsm (90,0 Ko)
bravo !!!
tout fonctionne.
C’est super bien et fonctionnel. Je vais étudier ligne par ligne votre programme afin de bien comprendre le fonctionnement. Cela me donne envie de m’initier à la programmation.
Nous allons tester avec les collègues le bon fonctionnement.
Encore Bravo et merci
bonjour
je le suis un peu vite avancer en disant que tout fonctionnait…
à l’utilisation je me suis rendu compte de 2 problèmes :
le premier fait que lorsque je modifie des données dans les cellule, la
formule “recap” considère qu’il s’agit d’une autre feuille et ramène
nous nouvelle ligne (ex turlututu)
le deuxième fait que si je supprime une feuille ou modifie le nom de
celle-ci; le listing conserve la ligne en état (ex CALI Fourchon).
pensez vous qu’il existe une solution à ces 2 problèmes ?
Juste une suggestion la colonne A ramène le nom et le prénom. Le nom
suffirait
Bien à vous
listing_activite_médiation essais 3 (3).xlsm (77.5 KB)
Bonjour,
Je pense surtout que votre principe est mal conçu
1-) Savoir ou vous effectuez les modification (sur Listing ou sur la feuille)
2-) Savoir comment vous créez une nouvelle fiche
3-) Si le NOM se trouve seul sur la colonne, les doublons ne sont pas pris en compte
Il serait bien mieux de prévoir une fiche vierge et d’après une macro, et un bouton CRÉER, faire une nouvelle fiche. avec les déroulants pour les modifications ultérieurs. Un bouton MODIFIER er un autre SUPPRIMER.
La saisie se ferait sur la fiche et la vue sur LISTING, avec un lien hypertexte pour accès.
Un tri alphabétique serait mis en place sur la feuille listing par Nom et Prénom.
bonjour
Votre logique est celle que j’ai suivi pour l’instant à savoir :
Une macro (bouton sur la feuille listing)permet de créer une nouvelle
fiche vierge (tout de suite à droite du listing). les informations sont
enregistrées sur la fiche. Les informations (grâce à vous) sont copiées
dans le listing avec la macro “recap”. La macro tri sur le listing
fonctionne aussi. Le problème est que toute modification apportée dans
une fiche (hors nom) créé une nouvelle ligne dans le listing. Ainsi dans
l’exemple il existe une seule fiche ALI BABA à laquelle j’ai modifié
plusieurs fois les informations. Or il y a plusieurs lignes dans le
listing (une ligne par modification suivi du bouton recap)
l’objectif est d’avoir une ligne par fiche, ligne qui s’actualise voir
qui disparaît lors de la suppression de la fiche.
Pour la colonne NOM-prénom, je comprends votre logique qui nécessite
d’avoir les 2 données dans la même colonne.
ci joint le tableau
listing_activite_médiation essais 3 (2).xlsm (377 KB)
Re,
Ok
Je regarde, mais je préviens d’avance que tous les modules qui sont dans l’exemple vont être supprimés
pour refaire du PROPRE
Car ce qui cause le soucis, c’st la macro qui se trouve dans chaque onglet et qui CHANGE automatiquement le nom de l’onglet
et des autres aussi 
Bonjour,
Voilà, à tester
les macros sont commentées, avec “Grosso/Modo” la même que précédemment
listing_activite_mediation V4.xlsm (86,9 Ko)
bonjour et merci pour ce travail
Que de changement, Je n’aurais pas pu arrivé à ce résultat.
j’ai 2 questions :
1 - A quoi sert la colonne avec le N° de fiche (je n’arrive pas à
associer le N° avec la position d’une fiche
2 - comment rectifier une erreur dans le nom. J’ai fais un essais avec
la fiche RAVEL. si je considère que je voulais écrire JAVEL, la
modification n’est pas prise en compte dans le listing ni dans la liste
de recherche.
Re,
1-) Le N° ID, tu n’y touche pas, il sert au référencement
2-) Tu sélectionnes la fiche, tu supprimes et tu recommences (Avant d’appuyer sur un bouton, on vérifie)
Pense que c’est un bouton nucléaire et tu feras gaffe
A savoir que pour créer la fiche, il faut le nom et le prénom, alors c’est pas la mer à boire pour la ressaisir