Simplification code

Bonjour,

Je suis très mauvais en Vba :/

Quelqu'un a une idée pour simplifier ce code :

If Not Intersect([B5:B21,B24:B26,B28:B43,B46:B47,B49:B50,E5:E21,E24:E26,E28:E43,E46:E47,E49:E50,H5:H21,H24:H26,H28:H43,H46:H47,H49:H50,K5:K21,K24:K26,K28:K43,K46:K47,K49:K50,N5:N21,N24:N26,N28:N43,N46:N47,N49:N50,Q5:Q21,Q24:Q26,Q28:Q43,Q46:Q47,T5:T21,T24:T26,T28:T43,T46:T47], Target) Is Nothing And Target.Count = 1 Then

Merci d'avance de la réponse apportée et le temps pris pour moi :)

Bonjour,

je suis débutant en vba mais je pense que tu peux sélectionner une plage de cellule en utilisant "range"

par exemple pour sélectionner la plage de A1 à A8:

Range("A1:A8").Select

En espérant que ça puisse t'aider en attendant une réponse plus précise.

Ce n'est pas une plage complète malheureusement. C'est bien mon problème :/

je viens de trouver ça:

https://www.excel-pratique.com/fr/vba/selections

si tu sélectionnes tes cellules avec la touche CTRL, tu peux ensuite renommé cette plage et la sélectionner avec range.

Bonjour à tous,

En effet, le meilleur moyen d'être tranquille (à condition que la plage ne change pas tout le temps), c'est de la nommer, comme le conseille mik-mikj, par exemple "saisie". Ensuite, dans le code, tu peux avoir uniquement ça :

set r = intersect(target, range("saisie"))
If Not r is nothing Then

Cdlt,

la plage est toujours trop longue obligé d'en avoir deux.... :/

Comment ça la plage est trop longue ? Excel bloque ? Et c'est bien dû à un nombre de zones trop important, pas à une mauvaise manipulation ?

Edit : Je viens d'essayer, ça marche de mon côté j'ai l'impression

Avec tout les plages sélectionnées il ne l'enregistre pas entièrement. Il me manque une partie. Plusieurs fois essayé de ctrl tout les cellules et de modifier le nom de la plage (je l'ai supprimer a chaque fois pour eviter les mauvaises manip)

J'ai fait des essais sans bien me rendre compte (je crois en avoir sélectionnées moins que toi)...

Et bien tu peux nommer plusieurs plages, ce n'est pas grave. Normalement, tu peux faire ceci ensuite :

set rUnion = range("plageB, plageE, plageL") 'etcetera
set r = intersect(target, rUnion)
If Not r is nothing Then

Cdlt,

Merci beaucoup ça marche nickel.

Rechercher des sujets similaires à "simplification code"