Incrémentation d'une variable dans array

Fermé
pqrt - 19 avril 2018 à 15:48
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 - 19 avril 2018 à 17:31
Bonjour et merci à l'avance pour votre aide.

Ça fait très longtemps que je n'ai pas programmé en vba... et j'ai de la difficulté à résoudre mon code
Je dois copier des cellules non contiguës de la dernière ligne d'une feuille excel dans une autre feuille excel sur la dernière ligne. J'ai écris le code pour faire la copie avec un numéro de ligne et ça fonctionne. Maintenant je voudrais modifier le numéro de ligne après chaque transfert... voir mon code ci-dessous. J'avais pensé définir une variable Ligne et la mettre dans la zone array... J'ai mis pour l'instant ce qui concerne la variable Ligne en commentaire. Je remplaçais le 87 par Ligne dans array....

Code :

Sub Transfert_info()
'
' Transfert_info Macro
' Transfère certaines données de la feuille ''Inscription'' à la feuille ''Gestion paiement parents''
'
' Touche de raccourci du clavier: Ctrl+t
'
Dim tablo As Variant, derlig As Long
'Dim Ligne As Long

'Ligne = 87
'Initialisation du départ
'array representant le nom des cellules de la fiche de saisie dans l'ordre dans lequel elles seront transposées
plage = Array("A87", "e87", "n87", "q87", "r87", "s87", "t87", "x87", "aa87", "ab87", "ac87")
ReDim tablo(0, UBound(plage)) ' redimentionnement d'une variable de type tableau avec le nombre d'élément dans l'array
For i = 0 To UBound(plage)
'inscription des données des cellules dans chaque items da la variable tableau
tablo(0, i) = Sheets("Inscription").Range(plage(i))
Next
'récupération de la première ligne vide et libre de la feuille de destination
derlig = Sheets("Gestion paiement parents").Range("A" & Rows.Count).End(xlUp).Row + 1
'resize de la cellule A et derlig a la dimention du tableau et pose de du tablo
Range("A" & derlig).Resize(1, UBound(plage)) = tablo
'Ligne = Ligne + 1

End Sub


pqrt

2 réponses

ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
Modifié le 19 avril 2018 à 16:19
Bonjour

Essaies comme ceci

Sub Transfert_info()
'
' Transfert_info Macro
' Transfère certaines données de la feuille ''Inscription'' à la feuille ''Gestion paiement parents''
'
' Touche de raccourci du clavier: Ctrl+t
'
Dim tablo(), derlig As Long, i As Long, plage()
Dim Ligne As Long
'Initialisation du départ
'array representant les colonnes nom des cellules de la fiche de saisie dans l'ordre dans lequel elles seront transposées
plage = Array("A", "e", "n", "q", "r", "s", "t", "x", "aa", "ab", "ac")
 ' redimentionnement d'une variable de type tableau avec le nombre d'élément dans l'array
For Ligne = 2 To 3
  ReDim tablo(UBound(plage))
  For i = 0 To UBound(plage)
    'inscription des données des cellules dans chaque items da la variable tableau
    tablo(i) = Sheets("Inscription").Range(plage(i) & Ligne).Value
  Next i
  'récupération de la première ligne vide et libre de la feuille de destination
  derlig = Sheets("Gestion paiement parents").Range("A" & Rows.Count).End(xlUp).Row + 1
  'resize de la cellule A et derlig a la dimention du tableau et pose de du tablo
  Sheets("Gestion paiement parents").Range("A" & derlig).Resize(1, UBound(plage)) = tablo
Next Ligne
End Sub


Cdlmnt

RQ. Utilises la coloration syntaxique (l'icone fleche-bas en haut à droite de la fenêtre d'édition
0
Merci. Ta macro fonctionne mais ce n'est pas tout à fait ce que je veux.
Je te donne plus de détails
Ma feuille INSCRIPTION contient au total 425 lignes à remplir dont des cellules non contiguës doivent être transférées sur la feuille GESTION DES PAIEMENTS après chaque inscription en faisant ''ctrl + t''. donc actuellement ma dernière inscription se trouve à la ligne 87 de la feuille Inscription et en faisant ''ctrl + t'' les données se transfèrent sur la feuille Gestion.... à la dernière ligne(qui doit être vide) du tableau. ensuite pour effectuer le transfert de la ligne 88 (nouvelle inscription) je refais ''ctrl+t'', ainsi de suite.

Ton premier va me servir pour autre chose, c'est pas perdu. tu peux me revenir là-dessus ?
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
19 avril 2018 à 17:31
Si je comprends, tu remplis une ligne et avant de la quitter, Ctrl+t pour transférer les données
Donc pas de boucle sur la variable ligne.
Si c'est ça
1. Tu remplaces For Ligne = 2 To 3 par Ligne = ActiveCell.Row
2. Tu supprimes la ligne Next Ligne

Cdlmnt
0