Recopier liste de nom vers une autre feuille
Bonjour,
J'ai repris et modifié une macro trouvée sur internet (je suis bien incapable de la créer !) pour faire une copie d'une liste de nom sur une feuille vers une autre feuille avec une plage de cellule différente, à partir clic sur un bouton.
Concrètement je voudrais :
Sur une feuille nommée "Liste_élève", j'ai une liste de nom dans les cellules A1 à A40. Je voudrais en cliquant sur un bouton exécutant la macro que cette liste soit recopiée sur une feuille nommée "Accueil". Sachant que A1 de "Liste élève" soit copiée en B5 de "Accueil", puis A2 en B7, ... jusqu'à A10 en B23, et ensuite A11 en D5 jusqu'à A20 en D23, puis A21 en F5 jusqu'à A30 en F23, puis enfin A31 en H5 jusqu'à A40 en H23 !!!
Voici le code que j'ai trouvé et modifié, mais qui ne fonctionne pas :
Sub copie_liste_élèves_Cliquer()
'
' copie_liste_élèves_Cliquer Macro
'
Dim i As Integer
Dim rng_feuil1 As Range
Dim rng_project As Range
Set rng_Liste_élève = Worksheets("Liste_élève").Range("A1:A40")
With Worksheets("Accueil")
.Range("B5:H23" & .Range("H23").End(xlUp).Row).ClearContents
Set rng_Accueil = .Range("B5")
For i = 0 To Worksheets("Liste_élève").Columns(1).Find("*", , , , , xlPrevious).Row - 1
rng_Accueil.Offset(0, 0) = rng_Liste_élève.Offset(i, 0) 'A1 de Liste élève to B5 de Accueil
rng_Accueil.Offset(0, 1) = rng_Liste_élève.Offset(i, 2) 'A2 de Liste élève to B7 de Accueil
rng_Accueil.Offset(0, 2) = rng_Liste_élève.Offset(i, 4) 'A3 de Liste élève to B9 de Accueil
rng_Accueil.Offset(0, 3) = rng_Liste_élève.Offset(i, 6) 'A4 de Liste élève to B11 de Accueil
rng_Accueil.Offset(0, 4) = rng_Liste_élève.Offset(i, 8) 'A5 de Liste élève to B13 de Accueil
rng_Accueil.Offset(0, 5) = rng_Liste_élève.Offset(i, 10) 'A6 de Liste élève to B15 de Accueil
rng_Accueil.Offset(0, 6) = rng_Liste_élève.Offset(i, 12) 'A7 de Liste élève to B17 de Accueil
rng_Accueil.Offset(0, 7) = rng_Liste_élève.Offset(i, 14) 'A8 de Liste élève to B19 de Accueil
rng_Accueil.Offset(0, 8) = rng_Liste_élève.Offset(i, 16) 'A9 de Liste élève to B21 de Accueil
rng_Accueil.Offset(0, 9) = rng_Liste_élève.Offset(i, 18) 'A10 de Liste élève to B23 de Accueil
rng_Accueil.Offset(0, 10) = rng_Liste_élève.Offset(i, 20) 'A11 de Liste élève to D5 de Accueil
rng_Accueil.Offset(0, 11) = rng_Liste_élève.Offset(i, 22) 'A12 de Liste élève to D7 de Accueil
rng_Accueil.Offset(0, 12) = rng_Liste_élève.Offset(i, 24) 'A13 de Liste élève to D9 de Accueil
rng_Accueil.Offset(0, 13) = rng_Liste_élève.Offset(i, 26) 'A14 de Liste élève to D11 de Accueil
rng_Accueil.Offset(0, 14) = rng_Liste_élève.Offset(i, 28) 'A15 de Liste élève to D13 de Accueil
rng_Accueil.Offset(0, 15) = rng_Liste_élève.Offset(i, 30) 'A16 de Liste élève to D15 de Accueil
rng_Accueil.Offset(0, 16) = rng_Liste_élève.Offset(i, 32) 'A17 de Liste élève to D17 de Accueil
rng_Accueil.Offset(0, 17) = rng_Liste_élève.Offset(i, 34) 'A18 de Liste élève to D19 de Accueil
rng_Accueil.Offset(0, 18) = rng_Liste_élève.Offset(i, 36) 'A19 de Liste élève to D21 de Accueil
rng_Accueil.Offset(0, 19) = rng_Liste_élève.Offset(i, 38) 'A20 de Liste élève to D23 de Accueil
rng_Accueil.Offset(0, 20) = rng_Liste_élève.Offset(i, 40) 'A21 de Liste élève to F5 de Accueil
rng_Accueil.Offset(0, 21) = rng_Liste_élève.Offset(i, 42) 'A22 de Liste élève to F7 de Accueil
rng_Accueil.Offset(0, 22) = rng_Liste_élève.Offset(i, 44) 'A23 de Liste élève to F9 de Accueil
rng_Accueil.Offset(0, 23) = rng_Liste_élève.Offset(i, 44) 'A24 de Liste élève to F11 de Accueil
rng_Accueil.Offset(0, 24) = rng_Liste_élève.Offset(i, 44) 'A25 de Liste élève to F13 de Accueil
rng_Accueil.Offset(0, 25) = rng_Liste_élève.Offset(i, 44) 'A26 de Liste élève to F15 de Accueil
rng_Accueil.Offset(0, 26) = rng_Liste_élève.Offset(i, 44) 'A27 de Liste élève to F17 de Accueil
rng_Accueil.Offset(0, 27) = rng_Liste_élève.Offset(i, 44) 'A28 de Liste élève to F19 de Accueil
rng_Accueil.Offset(0, 28) = rng_Liste_élève.Offset(i, 44) 'A29 de Liste élève to F21 de Accueil
rng_Accueil.Offset(0, 29) = rng_Liste_élève.Offset(i, 44) 'A30 de Liste élève to F23 de Accueil
rng_Accueil.Offset(0, 30) = rng_Liste_élève.Offset(i, 44) 'A31 de Liste élève to H5 de Accueil
rng_Accueil.Offset(0, 31) = rng_Liste_élève.Offset(i, 44) 'A32 de Liste élève to H7 de Accueil
rng_Accueil.Offset(0, 32) = rng_Liste_élève.Offset(i, 44) 'A33 de Liste élève to H9 de Accueil
rng_Accueil.Offset(0, 33) = rng_Liste_élève.Offset(i, 44) 'A34 de Liste élève to H11 de Accueil
rng_Accueil.Offset(0, 34) = rng_Liste_élève.Offset(i, 44) 'A35 de Liste élève to H13 de Accueil
rng_Accueil.Offset(0, 35) = rng_Liste_élève.Offset(i, 44) 'A36 de Liste élève to H15 de Accueil
rng_Accueil.Offset(0, 36) = rng_Liste_élève.Offset(i, 44) 'A37 de Liste élève to H17 de Accueil
rng_Accueil.Offset(0, 37) = rng_Liste_élève.Offset(i, 44) 'A38 de Liste élève to H19 de Accueil
rng_Accueil.Offset(0, 38) = rng_Liste_élève.Offset(i, 44) 'A39 de Liste élève to H21 de Accueil
rng_Accueil.Offset(0, 39) = rng_Liste_élève.Offset(i, 44) 'A40 de Liste élève to H23 de Accueil
Set rng_Accueil = rng_Accueil.Offset(1, 0)
Next i
End With
End Sub
Question subsidiaire même si c'est l'étape suivante : il me faudrait une macro qui permette de créer un lien hypertexte pour chaque noms recopiés dans la feuille "Accueil". Ce lien ouvrirait une feuille distincte pour chaque nom (les feuilles sont déjà existantes) où sur celle-ci apparait le nom (recopié auparavant) en A1. Il faudrait aussi que le lien ne soit pas supprimé en exécutant la macro de recopie de la liste !
Merci par avance à tous ceux qui voudront bien m'aider
Bonjour,
Je pense que tu devrais dans un premier temps, fournir un classeur de test avec la macro incorporée
et éviter de mettre directement la macro dans le message et la baliser avec les CODE pour éviter les petis "smileys"
C'est vrai ... désolé pour les smiley et la longueur du message !
Voici le fichier en question. La macro en question s'appelle "Copie_liste_élève_cliquer".
Merci par avance
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
Bonsoir,
Ci-joint une proposition à tester.
La procédure s'appelle "CopieListeEleve"
Bonne soirée
Bouben
EDIT : les onglets sont re-protégés à l'ouverture, il faut les déprotéger avant de lancer le traitement.
Bonjour,
Merci ça marche à merveille. Est-ce qu'il serait possible de rajouter un code pour demander un mot de passe lorsque je clique sur le bouton ?
Et venons en à la suite, que j'avais mis dans mon 1er post, il faudrait attribuer à chaque nom de la feuille "accueil" un lien hypertexte qui renvoie vers chaque fiche "élève" déjà créée, et que dans ces fiches apparaissent en A1 le nom présent dans la cellule du lien. Le tout sans que les liens ne soient effacés lorsque je change la liste de nom et que je les recopie avec la précédente macro.
Je ne sais pas si tout cela est possible ?
Merci par avance
Re,
J'ai réussi à faire le code pour le mot de passe, donc plus besoin.
En revanche je bloque sur le lien hypertexte et la recopie du nom de chaque élève dans leur feuille respective en A1. (voir la question sur le message précédent).
Merci par avance
Bonsoir,
Alors j'ai un peu avancé sur mon problème, j'ai créé ma première macro avec l'enregistreur. C'est un peu long puisque la recopie des noms se fait feuille par feuille donc une macro copier 40 fois !
Bref, je bloque sur un dernier problème : le création des liens hypertextes. Je pourrai les faire un par un sans macro, mais le problème, c'est qu'à chaque fois que je vais changer la liste de noms, les liens hypertextes vont s'effacer et je devrais recommencer !
Je joint le code utilisé pour faire la recopie des noms de la feuille "accueil" sur chaque fiche élève. Sans doute une amélioration à apportée et peut-être une intégration des liens hypertexte
Merci par avance
Sub Recopie_nom_sur_fiche_élève()
'
' Recopie_nom_sur_fiche_élève Macro
'
'
Sheets("élève1").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[3]C[1]"
Sheets("élève2").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[5]C[1]"
Sheets("élève3").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[7]C[1]"
Sheets("élève4").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[9]C[1]"
Sheets("élève5").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[11]C[1]"
Sheets("élève6").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[13]C[1]"
Sheets("élève7").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[15]C[1]"
Sheets("élève8").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[17]C[1]"
Sheets("élève9").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[19]C[1]"
Sheets("élève10").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[21]C[1]"
Sheets("élève11").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[3]C[3]"
Sheets("élève12").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[5]C[3]"
Sheets("élève13").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[7]C[3]"
Sheets("élève14").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[9]C[3]"
Sheets("élève15").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[11]C[3]"
Sheets("élève16").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[13]C[3]"
Sheets("élève17").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[15]C[3]"
Sheets("élève18").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[17]C[3]"
Sheets("élève19").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[19]C[3]"
Sheets("élève20").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[21]C[3]"
Sheets("élève21").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[3]C[5]"
Sheets("élève22").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[5]C[5]"
Sheets("élève23").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[7]C[5]"
Sheets("élève24").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[9]C[5]"
Sheets("élève25").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[11]C[5]"
Sheets("élève26").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[13]C[5]"
Sheets("élève27").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[15]C[5]"
Sheets("élève28").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[17]C[5]"
Sheets("élève29").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[19]C[5]"
Sheets("élève30").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[21]C[5]"
Sheets("élève31").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[3]C[7]"
Sheets("élève32").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[5]C[7]"
Sheets("élève33").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[7]C[7]"
Sheets("élève34").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[9]C[7]"
Sheets("élève35").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[11]C[7]"
Sheets("élève36").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[13]C[7]"
Sheets("élève37").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[15]C[7]"
Sheets("élève38").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[17]C[7]"
Sheets("élève39").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[19]C[7]"
Sheets("élève40").Select
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "=Accueil!R[21]C[7]"
End Sub- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
Bonjour,
Ci-joint une nouvelle version à tester.
Modification :
- création des liens hypertext
- alimentation de la cellule A1 de chaque onglet
Se fait lors de la copie de la liste des élèves
Bonne journée
Bouben
Bonjour,
Merci ça marche parfaitement, et c'est exactement ce que je voulais.