Comment copier: info apparaissant 1 fois, à recopier XX fois
J'ai une macro qui fonctionne, mais j'aurais voulu plutôt écrire ce code :
Range("A" & nbLigneFeuille1 & ":A" & (nbLigneFeuille1 + nbLigneSélectionnée - 1)).select
afin de rendre la copie complètement "variable" pour le nombre de lignes à réÉcrire.
Ma macro doit recopier dans Feuille1 toutes les données des Feuille2 à Feuille7 (ici dans mon exemple mais devra contenir plus de feuilles). Cependant j'ai trois INFO qui apparaissent 1 seule fois pour chaque Feuille 2 à 7 (Installation, Médecin et Catégorie), et qui doivent se retrouver XX fois dans Feuille1 (le même nombre de fois que de lignes de données de chaque Feuille 2 à 7).
Voir la Feuille "Macro non fonctionnelle" pour voir le code que j'aurais voulu, mais qui finalement dne fonctionne pas.
Bonjour,
Si j'ai bien compris ... Pour aller plus vite, tu peux avoir une seule instruction ... sans Select ... ni Paste ...
Range("A" & nbLigneFeuille1 & ":A" & (nbLigneFeuille1 + NbLigneSélectionnée - 1)).Copy Destination:=Sheets("Feuille2").Range("A2")Bonjour et Merci James007,
en fait, oui, je me doute que je peux éviter le Do... Loop et je cherche à raccourcir en peu de lignes de code, mais surtout dans Feuille1 le "Range de Début et le Range de FIN" doivent être avec des noms de Variables afin de tenir compe que pour 3 INFO (Installation, Médecin et Catégorie) ces valeurs se retrouve dans UNE seule cellule (de Feuille2,...7) et je dois les copier X fois dans Feuille1 (autant qu'il y de lignes de données dans Feuille2, ...7.
Chaque feuille (Feuille2,... Feuille7) a un nombre de données différents et changeant d'une semaine à l'autre.
Ex: Dans Feuille2 =30 lignes de données, mais 1 cellule contenant Installation en L11,...
Feuille2.Range("L11").copy Destination:=Sheets("Feuille1").Range("A" & nbLigneFeuille1 & ":A" & (nbLigneFeuille1 + NbLigneSélectionnée - 1))
Après remplacement des variables je voudrais que l'ordi est compris (sûrment la syntaxe n'est pas bonne, mais c'et pour illustrer mon besoin):
Feuille2.Range("L11").copy Destination:=Sheets("Feuille1").Range("A2:A32)
pour Feuille3 = 1 ligne de données
Feuille3.Range("L11").copy Destination:=Sheets("Feuille1").Range("A33:A33)
pour Feuille4 = 6 lignes de données
Feuille4.Range("L11").copy Destination:=Sheets("Feuille1").Range("A34:A39)
Merci d'avance à toi et à tous ceux qui collaborent avec les réponses à nos questionnements.
Bonjour,
Je ne comprends pas si ta macro fonctionne ou pas ...
Merci James007,
Réponse excellente et ça fonctionne. Surtout heureuse que je pourrai réutiliser souvent ce code ! Merci
Je joins le fichier corrigé, avec une feuile nommée: "Macro OK après correction", vous pourrez voir Section Verte, le code plus court et fonctionne.
Le code écrit en bleu où j'ai appliqué le même raisonnement que la section Verte (et maintenant plus court et performant).
Plus à droite, voir la Macro Avant vos conseils. Et encore plus à droite, une section Jaune avec le code qui ne fonctionnait PAS, mais où je cherchais à écrire ce que vous m'avez finalement soumis comme réponse :
Sheets("Feuille" & i).Range("I11").Copy _
Destination:=Sheets("Feuille1").Range("A" & (nbLigneFeuille1) & ":A" & (nbLigneFeuille1 + NbLigneSélectionnée - 1))
Merci et bonne fin de journée