Validation du code

Bonsoir à tous

J'ai mis dans une macro ce code

Sub Compteur1_QuandChangement() 'Lance la Macro init du calendrier Call InitialisationDesCouleursDuCalendrier ' LANCE LA MISE A JOUR DE LA FEUILLE SYNTHESE 'On efface les colonnes avant copie colle des mois Sheets(1).Range("B22:B52,U22:U52,B54:B84,U54:U84,B86:B116,U86:U116").Clear 'feuille 2 . selection .Copie Vers feuille 2 Début cellule pour avoir (Janvier) Sheets(2).Range("B9:B39").Copy Sheets(1).[B22] 'feuille 2 . selection .Copie Vers feuille 2 Début cellule pour avoir(Fevrier) Sheets(2).Range("E9:E39").Copy Sheets(1).[U22] 'feuille 2 . selection .Copie Vers feuille 2 Début cellule pour avoir (Mars) Sheets(2).Range("H9:H39").Copy Sheets(1).[B54] 'feuille 2 . selection .Copie Vers feuille 2 Début cellule pour avoir(Avril) Sheets(2).Range("K9:K39").Copy Sheets(1).[U54] 'feuille 2 . selection .Copie Vers feuille 2 Début cellule pour avoir(Mai) Sheets(2).Range("N9:N39").Copy Sheets(1).[B86] 'feuille 2 . selection .Copie Vers feuille 2 Début cellule pour avoir(Juin) Sheets(2).Range("Q9:Q39").Copy Sheets(1).[U86] End Sub

Le code fonctionne correctement

J'aimerai savoir, si une écriture plus rationnelle est possible

et si ma présentation de cette demande est claire svp

Merci pour votre aide

Cdt

Ledzep

Bonsoir,

et si ma présentation de cette demande est claire svp

Si ce n'est de vous dire d'utiliser la balise "code" plutôt que celle "mettre en valeur..."

La bonne borne est [</>]

@ bientôt

LouReeD

Bonsoir LouReeD

Entendu pour la remarque

Donc comme cela

Sub Compteur1_QuandChangement()

             'Lance la Macro init du calendrier
               Call InitialisationDesCouleursDuCalendrier

            ' LANCE LA MISE A JOUR DE LA FEUILLE SYNTHESE

                     'On efface les colonnes avant copie colle des mois
                             Sheets(1).Range("B22:B52,U22:U52,B54:B84,U54:U84,B86:B116,U86:U116").Clear

                     'feuille 2 . selection .Copie Vers feuille 1 Début cellule pour avoir (Janvier)
                              Sheets(2).Range("B9:B39").Copy Sheets(1).[B22]

                        'feuille 2 . selection .Copie Vers feuille 1 Début cellule pour avoir(Fevrier)
                              Sheets(2).Range("E9:E39").Copy Sheets(1).[U22]

                        'feuille 2 . selection .Copie Vers feuille 1 Début cellule pour avoir (Mars)
                                Sheets(2).Range("H9:H39").Copy Sheets(1).[B54]

                        'feuille 2 . selection .Copie Vers feuille 1 Début cellule pour avoir(Avril)
                               Sheets(2).Range("K9:K39").Copy Sheets(1).[U54]

                        'feuille 2 . selection .Copie Vers feuille 1 Début cellule pour avoir(Mai)
                              Sheets(2).Range("N9:N39").Copy Sheets(1).[B86]

                        'feuille 2 . selection .Copie Vers feuille 1 Début cellule pour avoir(Juin)
                              Sheets(2).Range("Q9:Q39").Copy Sheets(1).[U86]

End Sub

Cdt Ledzep

Bonsoir,

c'est déjà plus lisible

Maintenant il n'y a pas grand chose à dire... Surtout sans le fichier ni le mode de fonctionnement.

Si ce code fonctionne, alors gardez le, si avec le temps il s'alourdi, alors revenez mais avec le fichier...

@ bientôt

LouReeD

Bonsoir LouReeD

Entendu, j'ai encore un bout de code à faire pour finir mon application.

J'ai mis sur papier ma procédure, reste à la mettre en place.

Étant plus que débutant, je pioche sur le forum et parvient à faire par étape mon appli.

Je pense que pour la fin de semaine je présenterai mon fichier.

Merci de ton aide

Cdt

Ledzep

Bonsoir Ledzep, LouReeD,

je propose ce code VBA :

Sub Compteur1_QuandChangement()

  'Lance la Macro init du calendrier
  InitialisationDesCouleursDuCalendrier

  'LANCE LA MISE A JOUR DE LA FEUILLE SYNTHESE

  'On efface les colonnes avant copie colle des mois
  Worksheets(1).Range("B22:B52, U22:U52, B54:B84, U54:U84, B86:B116, U86:U116").ClearContents

  With Worksheets(2)
    .[B9:B39].Copy Worksheets(1).[B22] 'Janvier
    .[E9:E39].Copy Worksheets(1).[U22] 'Février
    .[H9:H39].Copy Worksheets(1).[B54] 'Mars
    .[K9:K39].Copy Worksheets(1).[U54] 'Avril
    .[N9:N39].Copy Worksheets(1).[B86] 'Mai
    .[Q9:Q39].Copy Worksheets(1).[U86] 'Juin
  End With

End Sub

dhany

@Ledzep : j'ai un peu modifié mon code VBA précédent (il est plus court à lire, et ça marchera aussi bien )

Bonsoir, Salut à LouReed et Dhany !!!

Avec seulement une partie de ton code, on peut qu'améliorer son écriture au sens strict mais on ne peut se pencher sur son adéquation à l'objectif poursuivi.

On ne sait ce que fait ta procédure d'initialisation des couleurs ni où elle intervient...

On ne peut juger si l'usage de copier-coller est justifié par la reproduction d'une mise en forme complexe ou si on gagnerait à procéder autrement...

Et puis, si tu procèdes par étapes, il demeure utile d'avoir une idée assez précise des étapes qui vont suivre car ce que tu mets en place pour chacune devra être adapté à l'ensemble pour que ton appli tourne de façon satisfaisante.

Cordialement.

Bonsoir à tous

J'ai réussi à faire avec l'aide du forum le début de ce fichier.

Principe:

Chaque onglet BJ1 BJ2 BJ3 ect possède sont calendrier

Chaque calendrier posséde des renseignements que l'on saisi avec la palette de couleur

Le but est de copier la totalité des cellules C9:C39 F9:F39 jusque R9:R39 pour chaque onglet et plus si création d'autres onglet et de les coller ds la feuille synthese comme j'ai commencé.

Dans l'onglet BJ1 je transfert les cellules [B9:B39] [f9:f39] [I9:I39] Ect dans la feuille synthese quand elle est active.

Cela fonctionne, mais , il doit y avoir une solution plus simple.

Merci de votre aide

Ledzep

5ev-ledz.xlsm (158.74 Ko)
Rechercher des sujets similaires à "validation code"