Garder la variable compteur apres fermeture des classeur concernés
moi3oo3
Messages postés11Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention12 janvier 2009
-
10 janv. 2009 à 19:29
skyla
Messages postés60Date d'inscriptionsamedi 17 juin 2006StatutMembreDernière intervention19 octobre 2009
-
12 janv. 2009 à 20:23
Salut a tous
voila mon problème: j'ai crée une macro pour centraliser des donnes reçus en pièces jointe par mail sous excel source (nc1 tr.xls) destination ( res.xls) j'arrive bien a realiser mon incrementation de ligne a l'execution mais pour l'instann avec 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 m As Long 'variable compteur
For m = 1 To 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
Next m
End Sub
et ca s'executebien 1 fois mais si je le rexecute sur un autre fichier joint il reecrit les infos a la place des precedentes. et le compteur reste a 1(ca doit venir de m=1to1 mais si je met 1 to 5 par exemple j'ai bien 5 ligne mais elle contiennent toutes les même donnés sauf la permiere case qui et bien incerementer.
Y dois y avoir une astuce a utiliser que je ne connasi pas.
Merci d'avance
A voir également:
Garder la variable compteur apres fermeture des classeur concernés
skyla
Messages postés60Date d'inscriptionsamedi 17 juin 2006StatutMembreDernière intervention19 octobre 2009 11 janv. 2009 à 14:50
Salut,
c'est bien normal que tes ligne recoivent les meme données puisque seul m est incrémenter dans ta boucle,et les variables d,n,t,p et c recevront toujours les memes valeur?Qu'importe le nombre de tours,d par exemple recevra toujours la selection en Range("J4").Select,Code a revoir!!
moi3oo3
Messages postés11Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention12 janvier 2009 11 janv. 2009 à 22:10
en fait mes donnes seront toujours a la mm place c'est dans les classeur resultat uniquement que j'ai besoin d'incrementer les cellules mais quandje rexecute la macro elle sont tj copier a la mm place et je sais po comment garder la valeur entre 2 utilisation de la macro :s
skyla
Messages postés60Date d'inscriptionsamedi 17 juin 2006StatutMembreDernière intervention19 octobre 2009 11 janv. 2009 à 22:38
Salut,
Windows("res.xls").Activate
Range("A" & m + 1).Value = m 'm aura toujour la valeur 1 donc toujour A2
Range("B" & m + 1).Value = d 'B2
Range("C" & m + 1).Value = n 'C2
Range("D" & m + 1).Value = t '...
Range("E" & m + 1).Value = p
Range("F" & m + 1).Value = c
ici la boucle n'est pas utile car a chaque fois qu'on y entre
m
va recevoir 1 donc dans le fichier resultat ce sera bien entendu les
meme cellules qui recevront les valeur ( "A" & m+1)=> "A" &
1+1=A2 et idem pour les autres
Il te faudra declarer m en public dans dans la partie declaration
generale,au chargement de la feuille tu l'initialise a 1,et tu retire
ta boucle,normalement ca devait marcher avec ca.
moi3oo3
Messages postés11Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention12 janvier 2009 11 janv. 2009 à 23:44
ok donc j'ai modifier mon code:
Public m As Long 'variable compteur
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
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" & CStr(m + 1)) = m
Range("B" & CStr(m + 1)) = d
Range("C" & CStr(m + 1)) = n
Range("D" & CStr(m + 1)) = t
Range("E" & CStr(m + 1)) = p
Range("F" & CStr(m + 1)) = c
m = m + 1 'incerementation du compteur
End Sub
mais il continue a ecrire sur la mêm ligne a chaque execution, je dois pas bien faire mon compteur et je me rend compte que comme je met m=1 en debut d'execution a chaque execution il doit repartir de 1 et je sais po vraiment comment je dois contourner le probleme
Vous n’avez pas trouvé la réponse que vous recherchez ?
moi3oo3
Messages postés11Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention12 janvier 2009 12 janv. 2009 à 03:38
par contre j'ai 2 autre question: comment je peut faire pour garder ma variable compteur au même point même si le classeur et fermer?
et quelsont les commande a utiliser pour deplacer et renomer des ficher enfin si c'est possible en vba
skyla
Messages postés60Date d'inscriptionsamedi 17 juin 2006StatutMembreDernière intervention19 octobre 2009 12 janv. 2009 à 20:23
Salut;
Pour garder la variable,tu sera obliger de la stocker,puisque a l'ouverture de la feuille celle ci sera remis a 1.tu peux la stocker sur une de tes feuille dans une cellule pour faire plus simple,ou alors dans un fichier ini,txt a toi de voir ce qui t'arrange ensuite,mais bien sur au démarrage tu devras alors récupérer cette valeur puis l'incrémenter dans ton code.Pour ce qui est des commandes de fichier,pas sur de pouvoir aider,vu que j'ai plus toucher au vba depuis fort longtemps mais tu trouvera ton bonheur ici surement.
a +