Créer une union

Le
Tatanka
Bonjour,

Comment définir en VBA l'union des celules contenant
la valeur 100 dans la plage A1:C5 ?
J'y arrive mais je trouve ça un peu tordu comme approche.
Il me semble avoir déjà vu quelque chose de plus élégant.
Vous avez une idée ou deux ?

Sub Union_De_Celules_Contenant_100()
Set ici = [a1:c5]
For i = 1 To ici.Count
If ici(i) = 100 Then
Set p = ici(i)
j = i
Exit For
End If
Next i
For i = j To ici.Count
If ici(i) = 100 Then Set p = Union(p, ici(i))
Next i
p.Select
End Sub

A--
Serge
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #6427631
bonjour Serge,

peut être comme ça,

Sub Union_De_Celules_Contenant_100()
Set ici = [a1:c5]
Set p = ici.Find(What:0, LookIn:=xlValues)
For i = 1 To ici.Count
If ici(i) = 100 Then Set p = Union(p, ici(i))
Next i
p.Select
End Sub

isabelle

Bonjour,

Comment définir en VBA l'union des celules contenant
la valeur 100 dans la plage A1:C5 ?
J'y arrive mais je trouve ça un peu tordu comme approche.
Il me semble avoir déjà vu quelque chose de plus élégant.
Vous avez une idée ou deux ?

Sub Union_De_Celules_Contenant_100()
Set ici = [a1:c5]
For i = 1 To ici.Count
If ici(i) = 100 Then
Set p = ici(i)
j = i
Exit For
End If
Next i
For i = j To ici.Count
If ici(i) = 100 Then Set p = Union(p, ici(i))
Next i
p.Select
End Sub

A--
Serge






Daniel.C
Le #6427611
Bonsoir Serge.
Sub test()
Dim c As Range, Plage As Range
For Each c In [A1:C5]
If c = 100 Then
If Plage Is Nothing Then
Set Plage = c
Else
Set Plage = Union(Plage, c)
End If
End If
Next c
Plage.Select
End Sub
Cordialement.
Daniel
"Tatanka" %
Bonjour,

Comment définir en VBA l'union des celules contenant
la valeur 100 dans la plage A1:C5 ?
J'y arrive mais je trouve ça un peu tordu comme approche.
Il me semble avoir déjà vu quelque chose de plus élégant.
Vous avez une idée ou deux ?

Sub Union_De_Celules_Contenant_100()
Set ici = [a1:c5]
For i = 1 To ici.Count
If ici(i) = 100 Then
Set p = ici(i)
j = i
Exit For
End If
Next i
For i = j To ici.Count
If ici(i) = 100 Then Set p = Union(p, ici(i))
Next i
p.Select
End Sub

A--
Serge






Tatanka
Le #6427891
Merci Isabella et Daniel,

Ça me convient parfaitement.

http://www.youtube.com/watch?v=m_aA2DBrRD0

Bonne soirée,
Serge


"Daniel.C"
Bonsoir Serge.
Sub test()
Dim c As Range, Plage As Range
For Each c In [A1:C5]
If c = 100 Then
If Plage Is Nothing Then
Set Plage = c
Else
Set Plage = Union(Plage, c)
End If
End If
Next c
Plage.Select
End Sub
Cordialement.
Daniel
"Tatanka"
Bonjour,

Comment définir en VBA l'union des celules contenant
la valeur 100 dans la plage A1:C5 ?
J'y arrive mais je trouve ça un peu tordu comme approche.
Il me semble avoir déjà vu quelque chose de plus élégant.
Vous avez une idée ou deux ?

Sub Union_De_Celules_Contenant_100()
Set ici = [a1:c5]
For i = 1 To ici.Count
If ici(i) = 100 Then
Set p = ici(i)
j = i
Exit For
End If
Next i
For i = j To ici.Count
If ici(i) = 100 Then Set p = Union(p, ici(i))
Next i
p.Select
End Sub

A--
Serge










Modeste
Le #6427881
Bonsour® Tatanka avec ferveur ;o))) vous nous disiez :

Comment définir en VBA l'union des celules contenant
la valeur 100 dans la plage A1:C5 ?
J'y arrive mais je trouve ça un peu tordu comme approche.
Il me semble avoir déjà vu quelque chose de plus élégant.


;o)))
Sub tatanka()
Set choixserge = Nothing
Quoi = 100
With ActiveSheet.Range("a1:F20")
Set trouve = .Find(what:=Quoi, LookIn:=xlValues)
If Not trouve Is Nothing Then
FirstAddress = trouve.Address
Set choixserge = trouve
Do
Set trouve = .FindNext(trouve)
Set choixserge = Union(choixserge, trouve)
Loop While Not trouve Is Nothing And trouve.Address <> FirstAddress
choixserge.Select
Else
MsgBox Quoi & " pas trouvé ...", vbCritical
End If
End With

End Sub


--
--
@+
;o)))

Modeste
Le #6427871
Bonsour® isabelle avec ferveur ;o))) vous nous disiez :

peut être comme ça,

Sub Union_De_Celules_Contenant_100()
Set ici = [a1:c5]
Set p = ici.Find(What:0, LookIn:=xlValues)
For i = 1 To ici.Count
If ici(i) = 100 Then Set p = Union(p, ici(i))
Next i
p.Select
End Sub


;o)))
pourquoi balayer toute les celllules ???
une boucle avec FindNext sera plus rapide
voir l'exemple dans l'aide VBA : Find, Methode

--
--
@+
;o)))

Tatanka
Le #6432071
Vraiment beaucoup très plus rapide sur de grosses plages ;-)
Temps requis sur la plage A1:Z50000 :
Isabella : 00:00:52
Modeste : 00:00:00 !

Serge


"Modeste"
Bonsour® Tatanka avec ferveur ;o))) vous nous disiez :

Comment définir en VBA l'union des celules contenant
la valeur 100 dans la plage A1:C5 ?
J'y arrive mais je trouve ça un peu tordu comme approche.
Il me semble avoir déjà vu quelque chose de plus élégant.


;o)))
Sub tatanka()
Set choixserge = Nothing
Quoi = 100
With ActiveSheet.Range("a1:F20")
Set trouve = .Find(what:=Quoi, LookIn:=xlValues)
If Not trouve Is Nothing Then
FirstAddress = trouve.Address
Set choixserge = trouve
Do
Set trouve = .FindNext(trouve)
Set choixserge = Union(choixserge, trouve)
Loop While Not trouve Is Nothing And trouve.Address <> FirstAddress
choixserge.Select
Else
MsgBox Quoi & " pas trouvé ...", vbCritical
End If
End With

End Sub


--
--
@+
;o)))





Publicité
Poster une réponse
Anonyme