Incrementation de ligne vba [Résolu]

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

Votre réponse

9 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 10 janv. 2009 à 17:23
3
Merci
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Dernière intervention
12 janvier 2009
- 10 janv. 2009 à 17:41
0
Merci
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
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Dernière intervention
12 janvier 2009
- 10 janv. 2009 à 17:42
0
Merci
Et merci beaucoup pour la rapidité de la réponse
Commenter la réponse de moi3oo3
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Dernière intervention
12 janvier 2009
- 10 janv. 2009 à 18:20
0
Merci
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
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 10 janv. 2009 à 19:58
0
Merci
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
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 10 janv. 2009 à 19:59
0
Merci
Pardon, pas avant de sortir de la Sub, mais avant d'exécuter le Next
Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 10 janv. 2009 à 20:00
0
Merci
Au fait, à quoi te sert la boucle avec le 'i' ?
Commenter la réponse de cs_Jack
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Dernière intervention
12 janvier 2009
- 10 janv. 2009 à 20:57
0
Merci
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
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Dernière intervention
12 janvier 2009
- 10 janv. 2009 à 20:58
0
Merci
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.