Remplir des cellules sur plusieurs feuilles à partir d'une liste

Fermé
Julien - 12 juin 2015 à 20:42
 Julien - 13 juin 2015 à 11:08
Bonjour à tous!

Je suis débutant sur excel et je commence à peine à comprendre comment fonctionne les macros...

Excusez moi si la solution a déjà été donné mais je ne la trouve pas...

j'aimerais compléter la cellule de chaque feuille de mon classeur a partir d'une liste du classeur.

En fait, sur la première feuille j'ai un tableau avec en colonne:
A: Nom
B: prénom
C: date de naissance

et j'aimerais que ces infos soient transférées sur toutes les autres feuilles du classeur :
Nom en cellule A8
Prénom en cellule C8
Date de naissance en cellule F8

Merci d'avance à tous pour vos réponses.

Julien.





1 réponse

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 525
12 juin 2015 à 21:04
Bonjour,

Avec un exemple, c'est plus simple ....
https://www.cjoint.com/c/EFmtdf4p6mK

A+
0
Merci Gyrus pour ta réponse.

J'ai du mal expliqué une partie de ce que je souhaite.

J'aimerais que sur la feuille 1, la premiere ligne du tableau apparaisse, sur la feuille 2 la second, etc.

C'est à dire que sur chaque feuille j'ai nom prénom date de naissance qui apparaissent...

Donc d'après ton exemple, il faudrait que sur la première feuille je n'ai que Dupont Paul 01/01/2001
sur la seconde Dubois Robin etc...

Et tout ça en cellule A8 C8 F8 :)

Merci d'avance Gyrus, j'espère que je suis un peu plus clair...
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 525 > Julien
12 juin 2015 à 23:01
Essaie comme cela :
Sub Transferer()
Dim WsS As Worksheet
Dim i As Byte
Set WsS = Worksheets("Feuil1") 'Feuille source
For i = 2 To 4
Worksheets(i).Range("A8") = WsS.Range("A" & i).Value
Worksheets(i).Range("C8") = WsS.Range("B" & i).Value
Worksheets(i).Range("F8") = WsS.Range("C" & i).Value
Next i
MsgBox "Traitement terminé !"
End Sub

A+
0
Julien > Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016
13 juin 2015 à 10:17
Merci encore Gyrus, cela fonctionne effectivement!

Si je peux un peu abuser, j'aimerais comprendre le code pour le modifier exactement comme je le souhaite:

Sub Transferer()
Dim WsS As Worksheet cela défini les feuilles concernées?
Dim i As Byte
Set WsS = Worksheets("Feuil1") 'Feuille source ok pour la feuille source

For i = 2 To 4 Si je comprend bien, tu créés une variable que tu nommes i. 2 to 4, c'est pour dire qu'on commence à la feuille 2 et qu'on termine à la 4?

Worksheets(i).Range("A8") = WsS.Range("A" & i).Value la je ne comprend pas vraiment ahah mais en gros, on met dans A8 ce qu'on trouve en colonne A pour A=i?

Worksheets(i).Range("C8") = WsS.Range("B" & i).Value
Worksheets(i).Range("F8") = WsS.Range("C" & i).Value
Next i
MsgBox "Traitement terminé !"
End Sub

Merci encore pour ton explication!
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 525
13 juin 2015 à 10:40
Bonjour,

For i = 2 To 4 Si je comprend bien, tu créés une variable que tu nommes i. 2 to 4, c'est pour dire qu'on commence à la feuille 2 et qu'on termine à la 4 ?

C'est bien cela.
Il faut donc impérativement que la feuille source soit la feuille 1.

Worksheets(i).Range("A8") = WsS.Range("A" & i).Value la je ne comprend pas vraiment ahah mais en gros, on met dans A8 ce qu'on trouve en colonne A pour A=i?
Là, j'utilise le fait que les données de la ligne 2 de la feuille source doivent être copiées dans la feuille 2, les données de la ligne 3 dans la feuille 3, etc.
L'indice i correspond donc à la fois au numéro de feuille où s'effectue la copie et au numéro de la ligne copiée.

A+
0
merci gyrus c'est vraiment parfait.

merci pour tes réponses et ta pédagogie ;)
0