Garder la variable compteur apres fermeture des classeur concernés

Signaler
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
12 janvier 2009
-
Messages postés
60
Date d'inscription
samedi 17 juin 2006
Statut
Membre
Dernière intervention
19 octobre 2009
-
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

Messages postés
60
Date d'inscription
samedi 17 juin 2006
Statut
Membre
Dernière intervention
19 octobre 2009

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

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

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

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

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 :)
Messages postés
11
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
12 janvier 2009

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

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>