M
mikepers
Guest
Bonsoir le forum !
j'utilise la fonction 'select case' pour déplacer des plages de données
en fonction de la valeur insérée dans une cellule ( ici O3).
le problème c'est que j'ai 20 fonction 'case' à chaque fois ( ici 2 seulement
sont représentés ) pour un nombre importants de modules ! le fichier risque
d'être trop lourd.
On remarque que dans mon cas, à chaque fois 2 zones de cellules sont déplacées
et ensuite les zones sources sont 'nettoyées'(Selection.ClearContents), et
ensuite une valeur FAUX est attribuée à 2 cellules- pour décocher 2 cases à
cocher d'options.
Cette 2eme partie de routine ( nettoyer, décocher ) est appliquer quelque soit
l'option 'case' ( c'est à dire peut importe la destination, à chaque fois la
routine se termine par le nettoyage et le décochage des même cellules).
Pour alléger le code, est il possible à votre avis de:
insérer dans les 'case' uniquement les valeurs de déplacement, et ensuite ne
répéter qu'une seule fois, en fin de routine, le code:
Range('K7:M16').Select
Selection.ClearContents
Range('K3:N5').Select
Selection.ClearContents
Range('G7:G16').Select
Selection.ClearContents
Range('P3').Value = FAUX
Range('P4').Value = FAUX
celà m'éviterai de taper à chaque fois ses fonctions qui sont les mêmes
quelque soit le 'case'.
Celà est il possible???Si oui, ou placer le code final????
Merci à vous
==================================
le code original:
Private Sub CommandButton2_Click()
' déplacement de la 1
If MsgBox('Repositionner la salle ?', _
vbYesNo + vbQuestion, 'Confirmation') = vbYes Then
Application.ScreenUpdating = False
Select Case Range('O3').Value
Case 1
Range('K7:M16').Select
Selection.Copy
Range('B7😀16').Select
ActiveSheet.Paste
Range('K3:N5').Select
Application.CutCopyMode = False
Selection.Copy
Range('B3:E5').Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range('K7:M16').Select
Selection.ClearContents
Range('K3:N5').Select
Selection.ClearContents
Range('G7:G16').Select
Selection.ClearContents
Range('P3').Value = FAUX
Range('P4').Value = FAUX
Case 2
Range('K7:M16').Select
Selection.Copy
Range('B31😀40').Select
ActiveSheet.Paste
Range('K3:N5').Select
Application.CutCopyMode = False
Selection.Copy
Range('B27:E29').Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range('K7:M16').Select
Selection.ClearContents
Range('K3:N5').Select
Selection.ClearContents
Range('G7:G16').Select
Selection.ClearContents
Range('P3').Value = FAUX
Range('P4').Value = FAUX
j'utilise la fonction 'select case' pour déplacer des plages de données
en fonction de la valeur insérée dans une cellule ( ici O3).
le problème c'est que j'ai 20 fonction 'case' à chaque fois ( ici 2 seulement
sont représentés ) pour un nombre importants de modules ! le fichier risque
d'être trop lourd.
On remarque que dans mon cas, à chaque fois 2 zones de cellules sont déplacées
et ensuite les zones sources sont 'nettoyées'(Selection.ClearContents), et
ensuite une valeur FAUX est attribuée à 2 cellules- pour décocher 2 cases à
cocher d'options.
Cette 2eme partie de routine ( nettoyer, décocher ) est appliquer quelque soit
l'option 'case' ( c'est à dire peut importe la destination, à chaque fois la
routine se termine par le nettoyage et le décochage des même cellules).
Pour alléger le code, est il possible à votre avis de:
insérer dans les 'case' uniquement les valeurs de déplacement, et ensuite ne
répéter qu'une seule fois, en fin de routine, le code:
Range('K7:M16').Select
Selection.ClearContents
Range('K3:N5').Select
Selection.ClearContents
Range('G7:G16').Select
Selection.ClearContents
Range('P3').Value = FAUX
Range('P4').Value = FAUX
celà m'éviterai de taper à chaque fois ses fonctions qui sont les mêmes
quelque soit le 'case'.
Celà est il possible???Si oui, ou placer le code final????
Merci à vous
==================================
le code original:
Private Sub CommandButton2_Click()
' déplacement de la 1
If MsgBox('Repositionner la salle ?', _
vbYesNo + vbQuestion, 'Confirmation') = vbYes Then
Application.ScreenUpdating = False
Select Case Range('O3').Value
Case 1
Range('K7:M16').Select
Selection.Copy
Range('B7😀16').Select
ActiveSheet.Paste
Range('K3:N5').Select
Application.CutCopyMode = False
Selection.Copy
Range('B3:E5').Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range('K7:M16').Select
Selection.ClearContents
Range('K3:N5').Select
Selection.ClearContents
Range('G7:G16').Select
Selection.ClearContents
Range('P3').Value = FAUX
Range('P4').Value = FAUX
Case 2
Range('K7:M16').Select
Selection.Copy
Range('B31😀40').Select
ActiveSheet.Paste
Range('K3:N5').Select
Application.CutCopyMode = False
Selection.Copy
Range('B27:E29').Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range('K7:M16').Select
Selection.ClearContents
Range('K3:N5').Select
Selection.ClearContents
Range('G7:G16').Select
Selection.ClearContents
Range('P3').Value = FAUX
Range('P4').Value = FAUX