Copie de cellules vers d'autres à partir d'une feuille correspondence

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

guigui1492

XLDnaute Nouveau
Bonjour,
Je suis nouveaux sur le forum, et j'ai un soucie en VBA j'ai cherché sur le forum une solution à mon problème mais sans success. Je me demandai si vous pouviez m'aider?

Je cherche à copier des cellules dans d'autres ( pour l'instant aucun probléme ) mais je veux passer par une feuille xls mapping (premiere ligne les cellules source et 2éme ligne les cellules destinations). Cette feuille me permet de ne pas modifier le code si jamais les correspondances ne sont pas bonnes mais de modifier la feuille.

J'avais pensé à un code de ce genre

Sub Test()
'on declare la variable comme une cell
Dim NomVariable As Range
'variable = la valeur de la cell b2 de la feuille 2 or dans B2 sheet2 on la valeur C3
NomVariable = Workbooks("book1").Sheets("Sheet2").Range("B2").Value

'on copie la cell "NomVariable" (soit c3) de sheet1 dans une cellule( sheet3 range A1)

Sheets("Sheet1").Range("NomVariable").Cells.Copy Workbooks("book1").Sheets("Sheet3").Range("A1")


End Sub

mais "Sheets("Sheet1").Range("NomVariable").Cells.Copy Workbooks("book1").Sheets("Sheet3").Range("A1")

" ne marche pas (ça aurait été trop beau). Pouvez-vous m'aider?

Merci

Cordialement
 
Re : Copie de cellules vers d'autres à partir d'une feuille correspondence

Bonjour,

si j'ai bien compris, dans ta feuille Mapping, tu écris sur la première ligne les cellules à copier (A1 A2 A3 A4)
et en ligne 2, tu écris leur destination (B1 B2 B3 B4)

avec ceci. tu devrais avoir un point de départ pour adapter à ton code
Code:
Sub Test()
'on récupère les adresses des cellules d'origine et de destination
CellOrigine = ThisWorkbook.Sheets("Mapping").Range("A1")
CellDestination = ThisWorkbook.Sheets("Mapping").Range("A2")

'et on copie
Sheets("Feuil1").Range(CellOrigine).Copy ThisWorkbook.Sheets("Feuil3").Range(CellDestination)
End Sub
 
Re : Copie de cellules vers d'autres à partir d'une feuille correspondence

bonjour vgendron,

merci pour ta réponse, si j'ai bien compris le problem de mon code était les " au tour de ma variable.

Et Vgendron penses-tu qu'il est possible d'incrémenter ce code avec un
Code:
CellOrigine = ThisWorkbook.Sheets("Mapping").Range("Ai")
 CellDestination = ThisWorkbook.Sheets("Mapping").Range("Bi")
?
 
Dernière édition:
Re : Copie de cellules vers d'autres à partir d'une feuille correspondence

Re
Bien sur
à la syntaxe près
le Range attend une chaine de caractère qui représente l'adresse de la cellule
une chaine est donc entre guillement "A1"
toi ce que tu souhaites, c'est avoir le 1 variable avec un i
il faut donc "reconstruire" la chaine de caractère en faisant une concaténation entre la lettre "A" et le contenu de la varaibla i
ce qui donne "A" &i
Code:
for i = 1 to 10
CellOrigine = ThisWorkbook.Sheets("Mapping").Range("A"&i)
CellDestination = ThisWorkbook.Sheets("Mapping").Range("B"&i)
Sheets("Feuil1").Range(CellOrigine).Copy ThisWorkbook.Sheets("Feuil3").Range(CellDestination)
Next i
 
Re : Copie de cellules vers d'autres à partir d'une feuille correspondence

Par contre, je viens de voir
si tu prends la colonne A pour les origines et la colonne B pour les destinations, tes adresses doivent etre en colonne et pas en ligne comme tu l'as écris dans ton premier post.
 
Re : Copie de cellules vers d'autres à partir d'une feuille correspondence

ah oui juste ça ne sera pas les chiffres mais les collone à incrémenter tu veux bien me donner la syntax stp?
Et aussi je suis pas fan du "for" je prefer un while si ca existe en VBA, pareil si tu peux me donner la syntax ?

Merci, tu m'aide bien ^^
 
Re : Copie de cellules vers d'autres à partir d'une feuille correspondence

Code:
Sub Test()
'on récupère les adresses des cellules d'origine et de destination
i = 1
While i <= 4 '4 étant ici un nombre mis arbitrairement
    CellOrigine = ThisWorkbook.Sheets("Mapping").Cells(i, 1)
    CellDestination = ThisWorkbook.Sheets("Mapping").Cells(i, 2)
    Sheets("Feuil1").Range(CellOrigine).Copy ThisWorkbook.Sheets("Feuil3").Range(CellDestination)
    i = i + 1
Wend

End Sub
 
Re : Copie de cellules vers d'autres à partir d'une feuille correspondence

Bonjour tout le monde,

Hier j'ai fait ce post mais je voudrai apporter des modifications car le code propose par Vgendron me parraissait correspondre à ce don't je cherchai mais pas tout à fait. Je vais joindre un fichier qui expose mon problem de maniére plus lisible.

cordialement
 

Pièces jointes

Re : Copie de cellules vers d'autres à partir d'une feuille correspondence

Hello

Essaie ceci
Code:
Sub test()
Dim Colorigine, Coldestination As String
'pour savoir le nombre d'itération pour la boucle While
NbColonnes = Range("A1").End(xlToRight).Column
i = 1
While i <= NbColonnes
    Colorigine = Sheets("Mapping").Cells(1, i)
    Coldestination = Sheets("Mapping").Cells(2, i)
    Sheets("Sheet3").Range(Colorigine & ":" & Colorigine).Cells.Copy Sheets("Sheet1").Range(Coldestination & ":" & Coldestination)
    i = i + 1
Wend
End Sub
 
Re : Copie de cellules vers d'autres à partir d'une feuille correspondence

Ou plutot ceci..
je crois que j'avais inversé les colonnes origine et destination
Code:
Sub test()
Dim Colorigine, Coldestination As String
'pour savoir le nombre d'itération pour la boucle While
NbColonnes = Range("A1").End(xlToRight).Column
i = 1
While i <= NbColonnes
    Colorigine = Sheets("Mapping").Cells(2, i)
    Coldestination = Sheets("Mapping").Cells(1, i)
    Sheets("Sheet3").Range(Colorigine & ":" & Colorigine).Cells.Copy Sheets("Sheet1").Range(Coldestination & ":" & Coldestination)
    i = i + 1
Wend
End Sub
 
Re : Copie de cellules vers d'autres à partir d'une feuille correspondence

Parfait Vgendron ça marche niquel. Enfin juste si je ne veux pas que les titres soit copié et que ça commence à copier qu'a la ligne 5 de ma feuille destination ? je te dis si je trouve la syntax car je pense à un truc du genre
Code:
Sub test()
 Dim Colorigine, Coldestination As String
 'pour savoir le nombre d'itération pour la boucle While
 NbColonnes = Range("A1").End(xlToRight).Column
 i = 1
 While i <= NbColonnes
     Colorigine = Sheets("Mapping").Cells(2, i)
     Coldestination = Sheets("Mapping").Cells(1, i)
     Sheets("Sheet3").Range(Colorigine & 2 ":" & Colorigine).Cells.Copy Sheets("Sheet1").Range(Coldestination & 5 ":" & Coldestination)
     i = i + 1
 Wend
 End Sub
 
Re : Copie de cellules vers d'autres à partir d'une feuille correspondence

C'est presque ca ;-)

Code:
Sub test()
Dim Colorigine, Coldestination As String
'pour savoir le nombre d'itération pour la boucle While
NbColonnes = Range("A1").End(xlToRight).Column
i = 1
While i <= NbColonnes
    Colorigine = Sheets("Mapping").Cells(2, i)
    Coldestination = Sheets("Mapping").Cells(1, i)
    num = Sheets("Sheet3").Range(Colorigine & "2").End(xlDown).Row
    Sheets("Sheet3").Range(Colorigine & "2:" & Colorigine & num).Cells.Copy Sheets("Sheet1").Range(Coldestination & "5:" & Coldestination & "5")
    i = i + 1
Wend
End Sub
 
Re : Copie de cellules vers d'autres à partir d'une feuille correspondence

Bonjour,
J'ai de nouveau un probléme de syntax comme dis dans mon avant-derniére réponse je voulais que ça soit copié dés la ligne 5 de ma feuille destination mais si j'ai une variable a la place ? (une variable integer)
Code:
Dim Firstline As Integer
Firstline = Sheets(sheet3).range("C5").value
Sheets("Sheet3").Range(Colorigine & "2:" & Colorigine & num).Cells.Copy Sheets("Sheet1").Range(Coldestination & Firstline & ":" & Coldestination & Firstline)

Mais ça ne marche pas, ca me mets que ca ne peut être copié car la copie et le coulé ne font pas la taille.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
1 K
Retour