Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro dans 2 plages de cellules uniquement

  • Initiateur de la discussion Initiateur de la discussion karinette
  • 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 !

karinette

XLDnaute Occasionnel
Bonsoir à tous ...
Encore un petit soucis à soumettre aux pro du VB :
Voila j'ai une macro qui me me met une valeur et une couleur dans une plage de cellule que je choisis :

Sub client1()
With Selection.Interior
.ColorIndex = Range("listeclient!G3").Value
.Pattern = xlSolid
End With
Selection.Font.ColorIndex = 0
Selection.Font.Bold = True
Selection.FormulaR1C1 = Range("listeclient!F3").Value
End Sub


J'aurais voulu limiter l'action à 2 plages de cellules seulement ("G10:X30" et "G40:X120").
J'ai tenté de modifier la macro avec divers exemples, mais sans succès ....

Si quelqu'un peu m'aider .... 😱
 
Re : Macro dans 2 plages de cellules uniquement

Bonsoir karinette,

Par exemple, commencez la macro par :

Code:
Dim plage As Range
Set plage = Intersect(Selection, Range("G10:X30,G40:X120"))

puis dessous remplacez partout Selection par plage.

A+
 
Re : Macro dans 2 plages de cellules uniquement

C'est exactement ça .... 🙂
En fait je n'étais pas bien loin (il me manquait le "selection" par "plage").

Par contre, comment eviter le "erreur d'execution" lorsque je suis hors selection ??

L'idéal serais un MsgBox "Plage non valide" (plus sympa)....

Est ce possible ?
 
Re : Macro dans 2 plages de cellules uniquement

Bonsoir


Essaie comme cela

Code:
Sub macrotest()
If Not Intersect(ActiveCell, Range("G10:X30,G40:X120")) Is Nothing Then
MsgBox "selection ok"
Else
MsgBox "selection pas ok"
End If
End Sub
 
Re : Macro dans 2 plages de cellules uniquement

Re, salut vbacrumble,

Par contre, comment eviter le "erreur d'execution" lorsque je suis hors selection ??

Oui j'avais oublié une ligne de test :

Code:
Dim plage As Range
Set plage = Intersect(Selection, Range("G10:X30,G40:X120"))
[COLOR="Red"]If plage Is Nothing Then MsgBox "Plage non valide": Exit Sub[/COLOR]

A+
 
Re : Macro dans 2 plages de cellules uniquement

Voila comment je l'ai modifié :

Sub client1()
Dim plage As Range
Set plage = Intersect(Selection, Range("G10:X30,G40:X120"))
If Not Intersect(ActiveCell, Range("G10:X30,G40:X120")) Is Nothing Then
With plage.Interior
.ColorIndex = Range("listeclient!G3").Value
.Pattern = xlSolid
End With
plage.Font.ColorIndex = 0
plage.Font.Bold = True
plage.FormulaR1C1 = Range("listeclient!F3").Value
Else
MsgBox "Mauvaise plage de selection"
End If
End Sub


Merci et bonne soirée 😉
 
Re : Macro dans 2 plages de cellules uniquement

Re


Puisque tu aimes les With /End With 😉

Code:
Sub client1()
Dim plage As Range
Set plage = Intersect(ActiveCell, Range("G10:X30,G40:X120"))
If Not Intersect(ActiveCell, Range("G10:X30,G40:X120")) Is Nothing Then
    With plage
    .FormulaR1C1 = Range("listeclient!F3").Value
        With .Interior
            .ColorIndex = Range("listeclient!G3").Value
            .Pattern = xlSolid
        End With
        With .Font
            .ColorIndex = 0
            .Bold = True
        End With
    End With
Else
MsgBox "Mauvaise plage de selection", _
        vbCritical, "Erreur : cellule " _
        & ActiveCell.Address(0, 0) & " invalide."
End If
End Sub
 
Re : Macro dans 2 plages de cellules uniquement

Re,

Oui, à ceci près qu'avec :

Code:
If Not Intersect(ActiveCell, Range("G10:X30,G40:X120")) Is Nothing Then

seule la cellule active est testée.

De plus ce code est plus compliqué que la solution :

Code:
Dim plage As Range
Set plage = Intersect(Selection, Range("G10:X30,G40:X120"))
If plage Is Nothing Then MsgBox "Plage non valide": Exit Sub

Bonne nuit.
 
Re : Macro dans 2 plages de cellules uniquement

Re, bonsoir job75



En acte de pénitence voici

PS: Si on utilise Selection , toutes les cellules prendront la valeur de F3 ?

Code:
Sub client11()
Dim plage As Range
Dim couleur As Range
Set couleur = Sheets("listeclient").[G3]
Set plage = Intersect(Selection, Range("G10:X30,G40:X120"))
If plage Is Nothing Then
MsgBox "Mauvaise plage de selection", vbCritical, "Erreur : Plage " & Selection.Address(0, 0) & " invalide.": Exit Sub
Else
    With plage
    .Value = couleur.Offset(, -1).Value
        With .Interior
        If IsEmpty(couleur) Or Not IsNumeric(couleur) Then Exit Sub
            .ColorIndex = CLng(couleur)
            .Pattern = xlSolid
        End With
        With .Font
            .ColorIndex = 0
            .Bold = True
        End With
    End With
End If
End Sub
 
Dernière édition:
- 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

Discussions similaires

Réponses
4
Affichages
583
L
Réponses
9
Affichages
1 K
A
Réponses
12
Affichages
2 K
AnjyD
A
F
Réponses
8
Affichages
3 K
F
M
Réponses
2
Affichages
7 K
Magicdog36
M
L
  • Question Question
Réponses
1
Affichages
1 K
lovell3
L
L
Réponses
7
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…