Sous Range d'un Range

  • Initiateur de la discussion Initiateur de la discussion Black-bass
  • Date de début Date de début

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 !

B

Black-bass

Guest
Bonjour,

un nouveau mystère pour moi qui débute en VBA...🙄

1) Y'a t-il un moyen simple d'extraire un sous-range d'un Range ? Exemple :

Code:
...
Dim Range1 As Range, Range2 As Range
Set Range1 = Range("A:E")
Set Range2 = Range("B:C")

Set Range1 = Range 1 privé de Range2 ( <=> Range("A:A,D:E") )
...

2) J'ai essayé de faire autrement : concaténer des Strings pour construire ensuite un Range :

Code:
...
'dans une boucle for sur k où je ne retiens que certaines colonnes de Range1 :

S = S &","& Range1.Columns(k).Address(RowAbsolute:=False, ColumnAbsolute:=False)
MsgBox "Ma plage pour la prochaine fois = " & S

' Dans la MsgBox j'obtiens : "A:A,D:E" - la String entre quote donc.

Set = Worksheets("Sheet1").Range(S)
...

La dernière ligne me renvoie une erreur '1004' alors que si j'écris en dur

Code:
...
Set = Worksheets("Sheet1").Range("A:A,D:E")
...

cela fonctionne !😕

Des idées ?

Merci bien 😉
 
Re : Sous Range d'un Range

Bonjour Black-bass
Un essai :
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim Range1 As Range, Range2 As Range
Dim a1, a2, Range3 As Range
   Set Range1 = Range("A:E")
   Set Range2 = Range("B:C")
   Set Range2 = Range2.Offset(0, -1).Resize(Range2.Rows.Count, Range2.Columns.Count + 2)
   a1 = Split(Range1.Address(0, 0), ":")
   a2 = Split(Range2.Address(0, 0), ":")
   Set Range3 = Range(a1(0) & ":" & a2(0) & ", " & a1(1) & ":" & a2(1))
End Sub[/B][/COLOR]
ROGER2327
#3691


Lundi 2 Gidouille 137 (Saint Lucullus, amateur (Bloosday), SQ)
28 Prairial An CCXVIII
2010-W24-3T10:13:23Z
 
Re : Sous Range d'un Range

Bonjour Roger2327,

merci pour ta proposition. En fait le problème sont les colonnes non contiguës.
J'aurai du donner un autre exemple de Range2 ; plutôt :

Code:
Set Range2 = Range("B:B,D:D")

par exemple. J'ai laissé tomber la manipulation des String et j'ai réussi en manipulant directement des Range avec Union :

Code:
...
A = Range1.Areas.Count 
N = 0
    For l = 1 To A
        N = N + Range1.Areas(l).Columns.Count
    Next l

' Code ci-dessus nécessaire pour compter dans un Range le nb de colonnes, contiguës ou pas.
...
For k in 1 to N
 '[I]***Si Range1.Columns(k) n'est pas dans les colonnes de Range2 alors :***[/I]

Set Range3 = Union(Range3, Range1.Columns(k))

End
...

Du coup çà roule 😀

Kenavo
 
Re : Sous Range d'un Range

Re...
Bonjour Roger2327,

merci pour ta proposition. En fait le problème sont les colonnes non contiguës.
J'aurai du donner un autre exemple de Range2 ; plutôt :

Code:
Set Range2 = Range("B:B,D:D")

par exemple. J'ai laissé tomber la manipulation des String et j'ai réussi en manipulant directement des Range avec Union :

Code:
...
A = Range1.Areas.Count 
N = 0
    For l = 1 To A
        N = N + Range1.Areas(l).Columns.Count
    Next l

' Code ci-dessus nécessaire pour compter dans un Range le nb de colonnes, contiguës ou pas.
...
For k in 1 to N
 '[I]***Si Range1.Columns(k) n'est pas dans les colonnes de Range2 alors :***[/I]

Set Range3 = Union(Range3, Range1.Columns(k))

End
...

Du coup çà roule 😀

Kenavo
Au poil, si ça roule...

(Je suis juste un peu couillon d'avoir perdu mon temps
à résoudre un problème qui ne se posait pas...)
ROGER2327
#3700


Lundi 2 Gidouille 137 (Saint Lucullus, amateur (Bloosday), SQ)
28 Prairial An CCXVIII
2010-W24-3T23:46:50Z
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

J
Réponses
22
Affichages
3 K
jui42
J
Réponses
8
Affichages
1 K
I
Réponses
3
Affichages
969
Izbeul
I
L
Réponses
1
Affichages
1 K
Lucien31
L
C
Réponses
1
Affichages
4 K
Conrad13
C
Retour