Incrementation de ligne vba [Résolu]

moi3oo3 11 Messages postés mardi 16 novembre 2004Date d'inscription 12 janvier 2009 Dernière intervention - 10 janv. 2009 à 17:02 - Dernière réponse : moi3oo3 11 Messages postés mardi 16 novembre 2004Date d'inscription 12 janvier 2009 Dernière intervention
- 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.
Afficher la suite 

9 réponses

Répondre au sujet
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 10 janv. 2009 à 17:23
+3
Utile
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)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Jack
moi3oo3 11 Messages postés mardi 16 novembre 2004Date d'inscription 12 janvier 2009 Dernière intervention - 10 janv. 2009 à 17:41
0
Utile
ok j'ai a peut pres compris mais par contre je fais comment pour utiliser la variable dans la nomination de la case??
Commenter la réponse de moi3oo3
moi3oo3 11 Messages postés mardi 16 novembre 2004Date d'inscription 12 janvier 2009 Dernière intervention - 10 janv. 2009 à 17:42
0
Utile
Et merci beaucoup pour la rapidité de la réponse
Commenter la réponse de moi3oo3
moi3oo3 11 Messages postés mardi 16 novembre 2004Date d'inscription 12 janvier 2009 Dernière intervention - 10 janv. 2009 à 18:20
0
Utile
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.
Commenter la réponse de moi3oo3
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 10 janv. 2009 à 19:58
0
Utile
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)
Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 10 janv. 2009 à 19:59
0
Utile
Pardon, pas avant de sortir de la Sub, mais avant d'exécuter le Next
Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 10 janv. 2009 à 20:00
0
Utile
Au fait, à quoi te sert la boucle avec le 'i' ?
Commenter la réponse de cs_Jack
moi3oo3 11 Messages postés mardi 16 novembre 2004Date d'inscription 12 janvier 2009 Dernière intervention - 10 janv. 2009 à 20:57
0
Utile
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
Commenter la réponse de moi3oo3
moi3oo3 11 Messages postés mardi 16 novembre 2004Date d'inscription 12 janvier 2009 Dernière intervention - 10 janv. 2009 à 20:58
0
Utile
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
Commenter la réponse de moi3oo3

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.