Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Créer une union

6 réponses
Avatar
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

6 réponses

Avatar
isabelle
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






Avatar
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" a écrit dans le message de news:
%
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






Avatar
Tatanka
Merci Isabella et Daniel,

Ça me convient parfaitement.

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

Bonne soirée,
Serge


"Daniel.C" a écrit dans le message de news:
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" a écrit dans le message de news: %
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










Avatar
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)))

Avatar
Modeste
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)))

Avatar
Tatanka
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" a écrit dans le message de news:
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)))