Garder la variable compteur apres fermeture des classeur concernés

moi3oo3 Messages postés 11 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 12 janvier 2009 - 10 janv. 2009 à 19:29
skyla Messages postés 60 Date d'inscription samedi 17 juin 2006 Statut Membre Dernière intervention 19 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

7 réponses

skyla Messages postés 60 Date d'inscription samedi 17 juin 2006 Statut Membre Dernière intervention 19 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!!



<sup>
[mailto:Sk@yL


S


]
</sup>



<sub>


</sub>
0
moi3oo3 Messages postés 11 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 12 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
0
skyla Messages postés 60 Date d'inscription samedi 17 juin 2006 Statut Membre Dernière intervention 19 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.







<sup>
[mailto:Sk@yL


S


]
</sup>



<sub>


</sub>
0
moi3oo3 Messages postés 11 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 12 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
0

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

Posez votre question
moi3oo3 Messages postés 11 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 12 janvier 2009
11 janv. 2009 à 23:54
ok j'ai trouver lasoluce avec un
   If m < 1 Then
   m = 1
      Else
        End If
poser apres ma declaration de varible enore merci pour ton aide :)
0
moi3oo3 Messages postés 11 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 12 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

merci tt plein d'avance
0
skyla Messages postés 60 Date d'inscription samedi 17 juin 2006 Statut Membre Dernière intervention 19 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 +





<sup>
[mailto:Sk@yL


S


]
</sup>



<sub>


</sub>
0
Rejoignez-nous