Microsoft 365 utiliser des listes en VBA

  • Initiateur de la discussion Initiateur de la discussion Simon 1234
  • Date de début Date de début

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 !

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?
 
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
 
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
 
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
 
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
 
- 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

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
498
Réponses
3
Affichages
534
Réponses
11
Affichages
599
Réponses
2
Affichages
403
Réponses
6
Affichages
312
Retour