Effectuer le code qu'une seule fois

Résolu
vieuxray -  
 vieuxray -
Bonjour a toutes et tous, Forum bonjour


Excel 2007 VBA

Avec le code ci-dessous le premier de chaque mois je déplace d'une colonne vers la droite.

le code fonctionne bien, seulement un petit soucis m'ennuie un peu.

le code est placer dans "Userform initialize"

Une première mise a jour s'est bien effectuer a la première ouverture de mon fichier ce matin.

Mais maintenant le code s'effectue a chaque initialisation de USF

Bon en fait, c'est normal puisque nous sommes le 01 février.

Mais comment faire pour que cette remise a jour ne s'effectue qu'une seule et unique fois

Merci a vous et de votre temps

Bonne après midi et merci

Cdlt Ray


'*** RECOPIER LES COLONNES ET LIGNES LE PREMIER JOUR DE CHAQUE MOIS AUTOMATIQUEMENT *****************
With Sheets("Compte")

With Cells(18, Month(Date) + 3).Resize(9, 1) 'Date déclenchement changement de colonne mensuel
If Month(Date) > 1 Then
.Copy .Offset(0, 1)
.SpecialCells(xlCellTypeConstants, 23).ClearContents
End If
End With
End With

17 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Bon en fait, c'est normal puisque nous sommes le 01 février. Non, c'est parce que vous avez ecrit ceci:

    If Month(Date) > 1 Then si le numero du mois en cours est supperieur a 1, donc a chaque fois que vous allez ouvrir l'UF vous aurez le code qui va s'executer
    1
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour Ray, bonjour f894009

    Peut être manque-t-il l'information comme quoi la mise à jour a été faite et ne doit pas être une nouvelle fois exécutée ?

    ;0)

    1
    1. vieuxray
       
      Salut polux31,

      Merci pour ta réponse,

      Merci pour ta contribution qui a permis de faire avancer vers une solution a mon soucis

      Bon Dimanche

      Cdlt Ray
      0
    2. Polux31 Messages postés 7219 Statut Membre 1 204
       
      Salut Ray,

      Tout le mérite revient à f894009. Je n'ai fait que donner une piste, et je ne doute pas que f894009 avait également cette solution.

      Merci, idem et bonne continuation.
      0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Private Sub UserForm_Initialize()
    '*** RECOPIER LES COLONNES ET LIGNES LE PREMIER JOUR DE CHAQUE MOIS AUTOMATIQUEMENT *****************
    With Sheets("Compte")
    If Month(Date) <> .Range("B24") Then
    .Range("B24") = Month(Date)
    With .Cells(18, Month(Date) + 3).Resize(9, 1) 'Date déclenchement changement de colonne mensuel
    .Copy .Offset(0, 1)
    .SpecialCells(xlCellTypeConstants, 23).ClearContents
    End With
    End If
    End With
    End Sub
    1
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Entre temps, j'ai rectifie l'empilage du code. Ceci au cas ou vous avez plusieurs onglets et que vous ayez selectionne un autre onglet, Range("B24") sera celle de l'onglet selectionne et .Range("B24") sera celle du With Sheets("Compte")

    Private Sub UserForm_Initialize()
    '*** RECOPIER LES COLONNES ET LIGNES LE PREMIER JOUR DE CHAQUE MOIS AUTOMATIQUEMENT *****************
    With Sheets("Compte")
    If Month(Date) <> .Range("B24") Then
    .Range("B24") = Month(Date)
    With .Cells(18, Month(Date) + 3).Resize(9, 1) 'Date déclenchement changement de colonne mensuel
    .Copy .Offset(0, 1)
    .SpecialCells(xlCellTypeConstants, 23).ClearContents
    End With
    End If
    End With
    End Sub
    1
  6. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Mais comment Excel se repère pour savoir qu'on est le premier du mois ??? le mois change le premier jour du mois suivant, donc il suffit de tester le changement de mois par Month(Date): mois(date en cours)
    1
  7. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    pour un test jour en dehors du premier, il faut prendre:

    Day(Date)=22 si vous voulez le 22
    1
  8. vieuxray
     
    Salut f894009,

    Merci pour la réponse, c'est gentil

    J'ai bien compris la réponse , j'ai pourtant bien fait des modifs a ce niveau mais ca ne change rien

    Comment svp modifier le test

    Merci pour l'aide

    Cdlt Ray
    0
  9. vieuxray
     
    Salut f894009

    Merci pour la réponse bien matinal

    J'ai bien compris mais je ne sais pas comment faire

    j'ai essayer de faire une macro a part pour éxécuter le bout de code.

    Afin de sortir le bout de code de "userform initialise" ce qui éviterai qu'a chaque mise a jour de l'Usf que ca redéclenche le code.

    mais je ne suis pas arriver

    Merci pour ton aide, bon Dimanche

    Cdlt Ray
    0
  10. vieuxray
     
    Re,

    Merci pour ta réponse et le fichier exemple, j'ai tester et ca m'a l'air de fonctionner

    j'ai simuler le mois (Mars) prochain en modifiant l'horloge de mon PC et ca marche en éxécutant qu'une seule fois le bout de code.

    j'ai mis en B24 de ma feuil(Compte) la valeur (2) et modifier le code comme ci-dessous

    je pense que c'est bon quand pense tu svp ???

    Mais je me pose une question, comment ca va se passer pour la fin de l'année
    passer de Décembre 2014 a Janvier 2015

    Merci pour ton aide

    A plus tard

    Ray

     
    With Sheets("Compte")

    With Cells(18, Month(Date) + 3).Resize(9, 1)
    If Month(Date) <> Range("B24") Then
    .Copy .Offset(0, 1)
    .SpecialCells(xlCellTypeConstants, 23).ClearContents
    Range("B24") = Month(Date)
    End If
    End With
    End With
    0
  11. vieuxray
     
    Re

    Merci pour les corrections pourtant, je viens de regarder mon programme fonctionne sans les points que tu me dit de rajouter.

    et pour la question svp.

    Mais je me pose une question, la cellule B24 va augmenter de 1 tous les mois

    comment ca va se passer pour la fin de l'année pour
    passer de Décembre 2014 a Janvier 2015

    merci a toi

    Ray
    0
  12. vieuxray
     
    Re

    Merci pour le fichier, j'ai effectivement 4 onglets dans mon programme

    alors d'après mes essais ça a l'air de bien fonctionner.

    Svp, Que veut dire plus excatement ( l'empilage du code )

    a plus tard et merci

    Ray
    0
  13. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Svp, Que veut dire plus excatement ( l'empilage du code )

    Il est plus logique de faire le test de changement de mois avant toutes instructions qui seraient executees si il y a changement de mois.
    0
  14. vieuxray
     
    Bonsoir f894009,

    Merci pour ta réponse, je comprends mieux.

    juste une dernière question si tu veux bien.

    je n'ai plus le code ci-dessous qui déclenchai mon déplacement de colonne en début du mois.

     If Month(Date) > 1

    par contre a la place j'ai la cellule B24 ou j'ai mis 2

    qui s'incrémente toute seule a chaque changement de mois

    je pense que 2 corresponds a février, 3 a mars etc etc

    Mais comment Excel se repère pour savoir qu'on est le premier du mois ???

    Merci Ray
    0
  15. vieuxray
     
    Re,

    Merci beaucoup la réponse est plus que satisfaisante

    Et si je souhaitai changer la date en mettant le 22 de chaque mois a la place du premier du mois

    le code serai modifier comment, cela m'interresse beaucoup de savoir comment fonctionne les tests sur les dates

    Merci a toi

    Ray
    0
  16. vieuxray
     
    Re f894009

    Merci beaucoup pour toutes ces informations, ca va bien me servir.

    Bon sinon pour moi c'est bon ca fonctionne très bien.

    je te souhaite une excellente soirée et bon début de semaine pour demain.

    Avec tous mes remerciements pour ton aide et ton savoir.

    Tu m'a déja beaucoup aider je t'en remercie encore.

    Bye bye a bientot sans doute

    Bien Cordialement Raymond
    0
  17. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour Ray, bonjour Polux 31,

    En effet, il manque la mise en memoire du passage au premier jour du mois et le test de celle-ci pour le prochain premier du mois. Une cellule ferait l'affaire
    -1