VBA: alléger code "select case" ??

  • Initiateur de la discussion Initiateur de la discussion mikepers
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
Re:VBA: alléger code

Salut mikepers
Si j'ai bien compris, suivant la valeur de O3, tu copies les mêmes cellules à des emplacements différents, puis tu les purges


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

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

Case 3
.........
End select
Range('G7:G16,K3:N5,K7:M16').Select
Selection.ClearContents
Range('P3').Value = FAUX
Range('P4').Value = FAUX
end sub

Si quelque soit la valeur de O3, en final tu effectues les mêmes opérations, les mettre après le End Select me semble une bonne solution
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
906
Réponses
10
Affichages
1 K
B
  • Résolu(e)
2
Réponses
16
Affichages
2 K
benbella1991
B
A
Réponses
7
Affichages
1 K
A
L
Réponses
9
Affichages
1 K
F
Réponses
8
Affichages
3 K
F
L
Réponses
1
Affichages
1 K
L
Réponses
6
Affichages
847
Retour