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

simplification VBA

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 !

magalie

XLDnaute Occasionnel
bonjour à tous et à toutes
pouvez-vous me dire comment simplifier le code suivant :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$F$5" Then
Range("G5:K5") = ""
With Range("G5:K5").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & Target.Value
End With

ElseIf Target.Address = "$F$6" Then
Range("G6:K6") = ""
With Range("G6:K6").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & Target.Value
End With

ElseIf Target.Address = "$F$7" Then
Range("G7:K7") = ""
With Range("G7:K7").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & Target.Value
End With


End If
End Sub

dans cet exemple ne sont pris en compte que de F5 à F7
et de G5 à K5 , G6 à K6 et G7 à K7

j'aimerais pouvoir étendre de F2 à F100 par exemple
et de de G5 à K5 jusqu'à G100 à K100

merci d'avance
 

Pièces jointes

Re : simplification VBA

Bonjour,
Peut être comme ceci :

Code:
If Not Intersect(Target, Range("F2:F100")) Is Nothing Then
    Range("G" & Target.Column & ":K" & Target.Column) = ""
    With Range("G" & Target.coumn & ":K" & Target.Column).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=" & Target.Value
    End With
End If

bonne journée
 
Re : simplification VBA

Re,

Désolé, je m'a trompé entre colonne et ligne. 🙄
Voici un meilleur code
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("F2:F100")) Is Nothing Then
    Range("G" & Target.Row & ":K" & Target.Row) = Empty
    With Range("G" & Target.Row & ":K" & Target.Row).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=" & Target.Value
    End With
End If
Application.EnableEvents = True
End Sub

En plus il ne faut pas oublier de bloquer évenements automatiques : application.enableevents

bonne journée
 
Re : simplification VBA

Yop,
Pour la plage, en ce moment, je dirai bien un gros pull en laine 😛

Je n'ai pas très bien saisie le sens de la question. La validation des données se fait automatiquement quans tu changes la valeur dans la callule "F" Quelquechose...

@+
 
- 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
5
Affichages
910
  • Question Question
Microsoft 365 modifier un code
Réponses
1
Affichages
541
Réponses
4
Affichages
586
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
903
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…