Incrementation de ligne vba

Résolu
moi3oo3 Messages postés 11 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 12 janvier 2009 - 10 janv. 2009 à 17:02
moi3oo3 Messages postés 11 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 12 janvier 2009 - 10 janv. 2009 à 20:58
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 janv. 2009 à 17:23
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)
3
moi3oo3 Messages postés 11 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 12 janvier 2009
10 janv. 2009 à 17:41
ok j'ai a peut pres compris mais par contre je fais comment pour utiliser la variable dans la nomination de la case??
0
moi3oo3 Messages postés 11 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 12 janvier 2009
10 janv. 2009 à 17:42
Et merci beaucoup pour la rapidité de la réponse
0
moi3oo3 Messages postés 11 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 12 janvier 2009
10 janv. 2009 à 18:20
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 janv. 2009 à 19:58
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)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 janv. 2009 à 19:59
Pardon, pas avant de sortir de la Sub, mais avant d'exécuter le Next
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 janv. 2009 à 20:00
Au fait, à quoi te sert la boucle avec le 'i' ?
0
moi3oo3 Messages postés 11 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 12 janvier 2009
10 janv. 2009 à 20:57
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
0
moi3oo3 Messages postés 11 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 12 janvier 2009
10 janv. 2009 à 20:58
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
0
Rejoignez-nous