Aide sur une boucle
Résolu
Mosedef
Messages postés
7
Statut
Membre
-
benol3 Messages postés 718 Statut Membre -
benol3 Messages postés 718 Statut Membre -
Bonjour à tous,
Je suis nouveau sur le forum mais je suis la qualité des interventions depuis pas mal de temps.
Enchanté!
J'ai besoin svp d'une aide sur une macro de boucle.
Voici ce que je veux faire:
-sur un onglet ou feuille ,copier le matricule dont le 1ier se trouve en A2.
-le coller dans la feuille à coté(dans le même classeur) dans la cellule J2 (cette cellule influence toutes les formules et graphiques que j'ai dejà crées dans cette même feuille).
-revenir sur la 1iere feuille et copier le nom qui se trouve sur la même ligne que A2(à savoir la cellule D2.
-retourner sur la 2ieme feuille et l'enregister sous format PDF sur le Bureau windows ou ailleurs...
-Au moment de l'enregistrement,coller le nom copier auparavant pour nommer le document pdf.
J'avais pensé à l'ordre "For next",mais il me manque une instruction dans la macro car l'action ne se répéte pas en passant au matricule suivant (A3,A4 etc.)
Pour info, il s'agit d'un projet de BSI que j'ai crée entièrement sur Excel et qui sera
a destination de 802 collaborateurs.
Donc, j'aurai tout intêret à automatiser cette tâche.
J'éspère avoir été assez précis, sinon n'hesitez pas à me demander des précisions.
Merci beaucoup d'avance.
Voici la macro:
Sub Macro1()
'
' Macro1 Macro
'
'
For i = 1 To 6
Selection.Copy
Sheets("Gardien").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
Range("J2").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("J2").Select
Sheets("Base gardien").Select
Range("A2").Select
Selection.Copy
Sheets("Gardien").Select
ActiveSheet.Paste
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Sheets("Base gardien").Select
Range("D2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "nom du collab"
Sheets("Gardien").Select
ChDir "C:\Users\U1003296\Desktop"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\U1003296\Desktop\Monique TOUGARD.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Next
End Sub
Je suis nouveau sur le forum mais je suis la qualité des interventions depuis pas mal de temps.
Enchanté!
J'ai besoin svp d'une aide sur une macro de boucle.
Voici ce que je veux faire:
-sur un onglet ou feuille ,copier le matricule dont le 1ier se trouve en A2.
-le coller dans la feuille à coté(dans le même classeur) dans la cellule J2 (cette cellule influence toutes les formules et graphiques que j'ai dejà crées dans cette même feuille).
-revenir sur la 1iere feuille et copier le nom qui se trouve sur la même ligne que A2(à savoir la cellule D2.
-retourner sur la 2ieme feuille et l'enregister sous format PDF sur le Bureau windows ou ailleurs...
-Au moment de l'enregistrement,coller le nom copier auparavant pour nommer le document pdf.
J'avais pensé à l'ordre "For next",mais il me manque une instruction dans la macro car l'action ne se répéte pas en passant au matricule suivant (A3,A4 etc.)
Pour info, il s'agit d'un projet de BSI que j'ai crée entièrement sur Excel et qui sera
a destination de 802 collaborateurs.
Donc, j'aurai tout intêret à automatiser cette tâche.
J'éspère avoir été assez précis, sinon n'hesitez pas à me demander des précisions.
Merci beaucoup d'avance.
Voici la macro:
Sub Macro1()
'
' Macro1 Macro
'
'
For i = 1 To 6
Selection.Copy
Sheets("Gardien").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
Range("J2").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("J2").Select
Sheets("Base gardien").Select
Range("A2").Select
Selection.Copy
Sheets("Gardien").Select
ActiveSheet.Paste
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Sheets("Base gardien").Select
Range("D2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "nom du collab"
Sheets("Gardien").Select
ChDir "C:\Users\U1003296\Desktop"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\U1003296\Desktop\Monique TOUGARD.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Next
End Sub
4 réponses
Voici ton fichier modifié :
https://mon-partage.fr/f/NVUU242S/
Pour générer les rapports, clic sur le bouton "créer les rapports" dans la feuille "gardien"
Fais attention à tes formules, il y a des #ref à certains endroits...
Pour accéder au code du bouton, fais Alt+F11et va dans le module "Rapport".
Adapte le chemin où tu veux avoir ensuite tes pdf.
https://mon-partage.fr/f/NVUU242S/
Pour générer les rapports, clic sur le bouton "créer les rapports" dans la feuille "gardien"
Fais attention à tes formules, il y a des #ref à certains endroits...
Pour accéder au code du bouton, fais Alt+F11et va dans le module "Rapport".
Adapte le chemin où tu veux avoir ensuite tes pdf.
Salut,
Tu as oublier ton incrément i à la fin de ton code
Es tu obligé de faire des copier-coller ?
un simple ='Base Gardien'!A2 dans ta celulle de la feuille 'Gardien' ferait l'affaire ?
Tu as oublier ton incrément i à la fin de ton code
Next i
Es tu obligé de faire des copier-coller ?
un simple ='Base Gardien'!A2 dans ta celulle de la feuille 'Gardien' ferait l'affaire ?
Merci bien pour la réponse.
En effet j'avais oublié le "i".
Mais même l'ayant rajouté,il ne me fait pas la boucle.(il ne passe pas au matricule suivant pour generer un autre fichier...).
Faire des copiers coller me semblait être la solution idéale puisque c'est la seule info qu'il faut renseigner en J2 pour que tout se mette à jour ( avec des recherch v).
Je comprend votre question des copier coller,mais je ne sais pas où placer votre suggestion dans le code.
Si vous pouviez me le corriger dessus svp.
Cdt
En effet j'avais oublié le "i".
Mais même l'ayant rajouté,il ne me fait pas la boucle.(il ne passe pas au matricule suivant pour generer un autre fichier...).
Faire des copiers coller me semblait être la solution idéale puisque c'est la seule info qu'il faut renseigner en J2 pour que tout se mette à jour ( avec des recherch v).
Je comprend votre question des copier coller,mais je ne sais pas où placer votre suggestion dans le code.
Si vous pouviez me le corriger dessus svp.
Cdt
Le voici
https://www.cjoint.com/?3GenfzKanBR
A votre disposition.
Je l'ai simplifié au maximum en ne laissant que le necessaire.
Merci d'avance
https://www.cjoint.com/?3GenfzKanBR
A votre disposition.
Je l'ai simplifié au maximum en ne laissant que le necessaire.
Merci d'avance
Re,
Donc pour recapituler, tu veux 1 feuille par personne en pdf qui serait la feuille "Gardien" avec le matricule de la personne ?
Donc si tu as 10 lignes dans ta feuille "Base gardien", tu auras 10 fichiers pdf etc ...
C'est bien sa ?
A quoi va te servir ta feuille "base de données" ?
Donc pour recapituler, tu veux 1 feuille par personne en pdf qui serait la feuille "Gardien" avec le matricule de la personne ?
Donc si tu as 10 lignes dans ta feuille "Base gardien", tu auras 10 fichiers pdf etc ...
C'est bien sa ?
A quoi va te servir ta feuille "base de données" ?
Oui c'est ça.
Il s'agira d'un document pour chaque collaborateur.
Donc si y 'a 10 matricules,alors 10 fichiers.
Idealement chaque fichier pourra porter le nom de la personne (c'est pour cela que je copier le nom pour le coller au moment de l'enregistrement en pdf).
La feuille Base de donnée me servait dans les formules (ce sont des recherch v).
Il s'agira d'un document pour chaque collaborateur.
Donc si y 'a 10 matricules,alors 10 fichiers.
Idealement chaque fichier pourra porter le nom de la personne (c'est pour cela que je copier le nom pour le coller au moment de l'enregistrement en pdf).
La feuille Base de donnée me servait dans les formules (ce sont des recherch v).