moi3oo3
Messages postés11Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention12 janvier 2009
-
10 janv. 2009 à 17:02
moi3oo3
Messages postés11Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention12 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.
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
moi3oo3
Messages postés11Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention12 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
moi3oo3
Messages postés11Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention12 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