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

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
 

vgendron

XLDnaute Barbatruc
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
 

guigui1492

XLDnaute Nouveau
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:

vgendron

XLDnaute Barbatruc
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
 

vgendron

XLDnaute Barbatruc
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.
 

guigui1492

XLDnaute Nouveau
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 ^^
 

vgendron

XLDnaute Barbatruc
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
 

guigui1492

XLDnaute Nouveau
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

  • Book1.xlsm
    17.3 KB · Affichages: 19
  • Book1.xlsm
    17.3 KB · Affichages: 31
  • Book1.xlsm
    17.3 KB · Affichages: 27

vgendron

XLDnaute Barbatruc
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
 

vgendron

XLDnaute Barbatruc
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
 

guigui1492

XLDnaute Nouveau
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
 

vgendron

XLDnaute Barbatruc
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
 

guigui1492

XLDnaute Nouveau
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.
 

Discussions similaires

Statistiques des forums

Discussions
313 296
Messages
2 096 912
Membres
106 786
dernier inscrit
Mgordat