Incrementation de ligne vba

Résolu
Signaler
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
12 janvier 2009
-
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
12 janvier 2009
-
Salut a tous,
    je doit actuelement realiser une macro vba pour amener les differentes donner recuperer dans des fichier excel vers un autre classeur qui resume toutes les donnée des fichier recus.
    je n'ai aucun soucis pour copier les données de mon classeur source vers la destination, mon probleme et pour ce qui et de l'incrementation car si j'execute ma macro sur un deuxieme fichier source les nouvelle donnes remplace celle precedament copier.
 
 Quel genre de solution je pourrais utiliser pour qu'as chaque execution de ma macro elle copie les données sur la ligne suivante ??

Merci d'avance.

ps: je ne sais pas si j'ai poster dans le bon theme si ce n'es pas le cas dite le moi je ferais le neccesaire.

9 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Catégorie modifiée NET --> VBA

Il te suffit de dimensionner une variable qui te servira de mémoire "prochaine ligne" :
Dans la partie "Déclarations" de ta page de code, tu places la décalration :
   Dim ProchaineLigne As Long
Cette variable concervera sa valeur tout le temps que ton classeur est ouvert.
Elle se réinitialisaera à la prochaine ouverture : tu n'as pas précisé si le classeur de destination était réinitilisé à chaque ouverture. Si tu dois conserver cette valeur entre deux exécutions, il faudra choisir une autre solution (pas précisé).

A l'initialisation de ton projet, il suffit de mettre dans cette variable le chiffre 1 = 1ère ligne
Cette variable deviendra donc le numéro de ligne de la prochaine insersion.
A chaque fois que tu insères des données, tu connais le nombre de lignes collées et tu l'ajoutes à la valeur actuelle de cette variable.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
12 janvier 2009

ok j'ai a peut pres compris mais par contre je fais comment pour utiliser la variable dans la nomination de la case??
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
12 janvier 2009

Et merci beaucoup pour la rapidité de la réponse
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
12 janvier 2009

voila mon code:

Sub traitment()
'
' traitment Macro
' Macro enregistrée le 10/01/2009 par Eozenn
'
' Touche de raccourci du clavier: Ctrl+a
'
 Dim d As String 'variable de pour la date
 Dim n As String 'variable de nom
 Dim t As String 'variable de type
 Dim p As String 'variable de defaut
 Dim c As String 'variable de cause
 
    Static i As Long 'variable du compteur
    For i = 2 To 10
        Windows("NC1 tr.xls").Activate
        Range("J4").Select
        d = Selection
        Range("J2").Select
        n = Selection
        Range("J6").Select
        t = Selection
        Range("E9").Select
        p = Selection
        Range("I9").Select
        c = Selection
       
       
        Windows("res.xls").Activate
        Range("A2") = i
        Range("B2") = d
        Range("C2") = n
        Range("D2") = t
        Range("E2") = p
        Range("F2") = c
       
   Next i

End Sub

mais pour l'instant ca ne fais qu'incrementer la 1ere case de mon classeur resultat qui copie 10 fois le contenus de mes cellules sur la ligenpercedament copier le but etant de n'avoir qu'une execution et qu'as la prochainne execution les donnes soit copier sur la ligne suvante.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Re
Bah par exemple :
Au lieu d'utiliser 
   Range("A2")
Tu utilises
   Range("A" & CStr(ProchaineLigne))
sans oublier de faire 
   ProchaineLigne  = ProchaineLigne  + 1
avant de sortir de ta Sub

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Pardon, pas avant de sortir de la Sub, mais avant d'exécuter le Next
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Au fait, à quoi te sert la boucle avec le 'i' ?
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
12 janvier 2009

Pour le coup j'ai bien l'impression que cette boucle ne sert a rien et je l'ai virée;, et j'ai fait les modifs du code pour l'incerementation:
Sub traitment()
'
' traitment Macro
' Macro enregistrée le 10/01/2009 par Eozenn
'
' Touche de raccourci du clavier: Ctrl+a
'
 Dim d As String 'variable de pour la date
 Dim n As String 'variable de nom
 Dim t As String 'variable de type
 Dim p As String 'variable de defaut
 Dim c As String 'variable de cause
 Static m As Long 'variable compteur
 
     m = 1
       
        Windows("NC1 tr.xls").Activate 'mise en memoire des données du mail
        Range("J4").Select
        d = Selection
        Range("J2").Select
        n = Selection
        Range("J6").Select
        t = Selection
        Range("E9").Select
        p = Selection
        Range("I9").Select
        c = Selection
       
       
        Windows("res.xls").Activate 'ecriture des données du mail dans le classeur resultat
        Range("A" & m + 1).Value = m
        Range("B" & m + 1).Value = d
        Range("C" & m + 1).Value = n
        Range("D" & m + 1).Value = t
        Range("E" & m + 1).Value = p
        Range("F" & m + 1).Value = c
       
    m = m + 1
   
End Sub
 
Mon dernier soucis et que les données soit mise a la ligne suivante l'hors de l'execution suivante, pour l'instant j'ai un vieux ding et mes donnés qui ne change pas je suppose qu'il refuse l'execution de lamacro une deuxiemem fois mais je ne sais pas pourquoi je n'ai aucun message a l'ecran
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
12 janvier 2009

au fait j'ai passer ma variable de conmpteur en static en esperant qu'il garde sa valeur j'usqu'a la prochaine execution/ ouverture du classeur