Probleme d'argument dans le Range

Résolu
mikmak78 Messages postés 59 Date d'inscription vendredi 5 octobre 2012 Statut Membre Dernière intervention 6 mars 2017 - 21 mai 2014 à 08:11
mikmak78 Messages postés 59 Date d'inscription vendredi 5 octobre 2012 Statut Membre Dernière intervention 6 mars 2017 - 21 mai 2014 à 13:08
Bonjour,
je souhaite selectionner plusieurs cellules n'importe où dans plusieurs plages non-adjacentes, mais voila j'ai pas mal de données... et apres avoir eliminé certaines plages dans mon range je remarque que ma macro fonctionne. Je pense donc qu'il y a une limite au niveau du range.
Voici ma macro (double click apparition d un calendar)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("D4:D26,F4:F26,H4:H26,J4:J26,L4:L26,N4:N26,P4:P26,R4:R26,T4:T26,V4:V26,X4:X26,Z4:Z26,AB4:AB26,AD4:AD26,AF4:AF26,AH4:AH26,AJ4:AJ26,AL4:AL26,AN4:AN26,AP4:AP26,AR4:AR26,AT4:AT26,AV4:AV26,AX4:AX26,AZ4:AZ26,BB4:BB26,BD4:BD26,BF4:BF26,BH4:BH26,BJ4:BJ26,BL4:BL26")) Is Nothing Then
calendrier.Show
End If
End Sub
Je remercie d'avance mes "helper"

2 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 mai 2014 à 10:52
Bonjour,
Je pense donc qu'il y a une limite au niveau du range.

Plutôt que de "penser", j'ouvrirais à ta place mon aide VBA sur le mot Intersect et y verrais que cette méthode accepte un maximum de 30 arguments (range) .
Puis je "décomposerais"
If not intersect (max 30) ans not intersect (max 30) ... Then
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 mai 2014 à 11:23
Ou encore :
Utilise la méthode Union.
Elle-même admet toutefois un mlaximum de 30 arguments range.
Décompose-la donc, ainsi (exemple) :
 Dim toto As Range
Set toto = Union(Range("D4:D26"), Range("F4:F26"), Range("H4:H26"), Range("J4:J26"), Range("L4:L26"), Range("N4:N26"), Range("P4:P26"), Range("R4:R26"))

Set toto = Union(toto, Range("T4:T26"), Range("V4:V26"), Range("X4:X26"), Range("Z4:Z26"), Range("AB4:AB26"), Range("AD4:AD26"), Range("AF4:AF26"), Range("AH4:AH26"), Range("AJ4:AJ26"), Range("AL4:AL26"), Range("AN4:AN26"), Range("AP4:AP26"), Range("AR4:AR26"), Range("AT4:AT26"), Range("AV4:AV26"), Range("AX4:AX26"), Range("AZ4:AZ26"), Range("BB4:BB26"), Range("BD4:BD26"), Range("BF4:BF26"), Range("BH4:BH26"), Range("BJ4:BJ26"), Range("BL4:BL26"), Range("CL4:CL26"))
If Not Intersect(Target, toto) Is Nothing Then ....
0
mikmak78 Messages postés 59 Date d'inscription vendredi 5 octobre 2012 Statut Membre Dernière intervention 6 mars 2017
21 mai 2014 à 13:08
Merci Uctoufou probleme resolu

Ce que je retiens:
Avant de poser une question verifier dans l'aide -_-!
utliser la fonction Union est bigrement utile
0
Rejoignez-nous