Microsoft 365 utiliser des listes en VBA

Simon 1234

XLDnaute Junior
Bonjour
J'ai déjà fait ça en C et en Python mais pas en VBA

Je voudrais indiquer dans une liste les cellules d'où je veux copier des valeurs et dans une autre les cellules vers lesquelles je veux coller des valeurs:

Sub Macro1()

source="a6","c2","e7"
destination="n10","b12",a33"

For i = 1 To 3
Range(Source(i)).FormulaR1C1 = Range(Destination(i)).Value

Next

End Sub


Quelque chose comme ça.
C'est possible? Comment fait-on?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Simon,
On peut faire :
VB:
Sub Macro1()
Source = Array("a6", "c2", "e7")            ' Déclaration tableau source
Destination = Array("n10", "b12", "a33")    ' et destination
For i = 0 To UBound(Source)                 ' Les tableaux commencent en 0, Ubound donne la fin
    Range(Destination(i)) = Range(Source(i)).Value
Next
End Sub
 

Simon 1234

XLDnaute Junior
C'est parfait, j'étais pas très loin. Merci ca fonctionne parfaitement, ça va faire du ménage dans mon code ^^

Bon et si je veux faire ça dans l'autre sens:

Sub Macro2()

copcol1 = Array("a1", "b1")
copcol2 = Array("a2", "c1")
copcol3 = Array("a3", "d1")

For i = 1 To 3
Range("copcol&i"(2) = Range("copcol&i"(1)).Value
Next

End Sub
 

Simon 1234

XLDnaute Junior
Bonjour Simon,
On peut faire :
VB:
Sub Macro1()
Source = Array("a6", "c2", "e7")            ' Déclaration tableau source
Destination = Array("n10", "b12", "a33")    ' et destination
For i = 0 To UBound(Source)                 ' Les tableaux commencent en 0, Ubound donne la fin
    Range(Destination(i)) = Range(Source(i)).Value
Next
End Sub
encore un grand merci à toi, ça fait tourner le code teeeelllleeeement plus vite
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bon et si je veux faire ça dans l'autre sens:
Peut être avec :
VB:
Sub Macro2()
Colpol = Array("a1", "b1", "a2", "c1", "a3", "d1")
For i = 0 To 5 Step 2
    Range(Colpol(i)) = Range(Colpol(i + 1))
Next
End Sub
ou encore avec Cells(Ligne,Colonne) :
Code:
Sub Macro3()
    For Colonne = 2 To 4
        Cells(Colonne - 1, 1) = Cells(1, Colonne)
    Next Colonne
End Sub
 

Discussions similaires

Réponses
4
Affichages
450

Statistiques des forums

Discussions
315 094
Messages
2 116 155
Membres
112 671
dernier inscrit
Sylvain14