Probleme d'argument dans le Range [Résolu]

Messages postés
59
Date d'inscription
vendredi 5 octobre 2012
Statut
Membre
Dernière intervention
6 mars 2017
- - Dernière réponse : 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"
Afficher la suite 

2 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
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 ....
mikmak78
Messages postés
59
Date d'inscription
vendredi 5 octobre 2012
Statut
Membre
Dernière intervention
6 mars 2017
-
Merci Uctoufou probleme resolu

Ce que je retiens:
Avant de poser une question verifier dans l'aide -_-!
utliser la fonction Union est bigrement utile
Commenter la réponse de ucfoutu