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

améliorer ligne de code

gourdin

XLDnaute Impliqué
Bonjour,

Voici une ligne de code que je souhaiterai simplifier en évitant la répétition des "Target.Adress"

If Target.Address <> "$D$3" And Target.Address <> "$D$6" And Target.Address <> "$D$9" And Target.Address <> "$D$12" etc.. Then Exit Sub

Merci
 

jp14

XLDnaute Barbatruc
Re : améliorer ligne de code

Bonjour

Ci dessous un code possible

ok = true
For i = 3 to x step 3
If target.adress <> "$D$" & i then
Ok= false
exit for
Next i
If ok = false then exit sub
Bonne journéee

JP
 

gourdin

XLDnaute Impliqué
Re : améliorer ligne de code

Merci à vous deux

En effet celà fonctionne si les cellules sont réparties toutes les 3 lignes comme dans ma question mais si les cellules sont discontigues et non réparties toutes les 3 lignes ?

Je pensais en novice à un code du type : If Target.Address <> "$D$5","$D$7","$D$11" etc. sachant qu'il y a une vingtaine de cellules à prendre en compte dans la même colonne

Merci
 
Dernière édition:

jp14

XLDnaute Barbatruc
Re : améliorer ligne de code

Bonjour

En utilisant un "Array"
Code:
Dim tablo As Variant, i As Long, Ok as Boolean

tablo = Array("$D$5","$D$7","$D$11", .......)
Ok = true
For i = LBound(tablo) To UBound(tablo)
If target.adress <> tablo(i) then
Ok= false
exit for
end if
Next i
If ok = false then exit sub

JP
 

Papou-net

XLDnaute Barbatruc
Re : améliorer ligne de code

Bonsoir gourdin, jp14, Dranreb,

Autre méthode possible:

Code:
Dim Plage As Range
Set Plage = Range("D3, D6, D9, D12,.....")
If Intersect(Plage, Target) Is Nothing Then ....
Cordialement.
 

Discussions similaires

Réponses
1
Affichages
380
Réponses
1
Affichages
192
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…