Déterminer un plage partielle dans une colonne

Le
Apitos
Bonjour à tous,

Comment puis-je déterminer une plage dans une colonne selon un mot don=
né.

Exemple :

Ad
Ad
Kr
Kr
Kr
Ml
Ml

J'ai essayé :

'
mot="Kr"
LimiteInf = Application.Match(mot, columns(4),0)
LimiteSup = Application.Match(mot, columns(4))
Set tPlage = range("E" & LimiteInf & ":E" & LimiteSup)
'

Résultat :

LimiteInf = 3
LimiteSup = 7

Or LimiteSup devra être égale à 5

Merci d'avance.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26448470
Bonjour,
En supposant que tes données se situent en colonne A,
'---------------------------------------------------------
Sub test1()
Dim Rg As Range
Dim LeMin As Long, LeMax As Long
With Feuil1
Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
With Rg
LeMin = Evaluate("Min(IF(" & .Address & "=""kr"",ROW(" & .Address &
")))")
LeMax = Evaluate("Max(IF(" & .Address & "=""kr"",ROW(" & .Address &
")))")
End With
With Worksheets("Feuil1")
MsgBox .Name & "!" & .Range(.Cells(LeMin, "A"), .Cells(LeMax,
"A")).Address
End With
End Sub
'---------------------------------------------------------
MichD
.
MichD
Le #26448471
Même procédure, mais une meilleure formulation :
'------------------------------------------------------------
Sub test1()
Dim Rg As Range, Sh As Worksheet
Dim LeMin As Long, LeMax As Long
'Onglet feuille à adapter
Set Sh = Worksheets("Feuil1")
With Sh
'Plage de cellules à définir de tes données
Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
With Rg
LeMin = Evaluate("Min(IF(" & .Address & _
"=""kr"",ROW(" & .Address & ")))")
LeMax = Evaluate("Max(IF(" & .Address & _
"=""kr"",ROW(" & .Address & ")))")
End With
With Sh
MsgBox .Name & "!" & .Range(.Cells(LeMin, Rg.Column), _
.Cells(LeMax, Rg.Column)).Address
End With
End Sub
'------------------------------------------------------------
MichD
MichD
Le #26448472
Et une dernière variante :
'----------------------------------------------------------------
Sub test1()
Dim Rg As Range, Sh As Worksheet
Dim LeMin As Long, LeMax As Long
Dim Mot As String
'Onglet feuille à adapter
Set Sh = Worksheets("Feuil1")
'Expression retenue
Mot = "Kr"
With Sh
Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
With Rg
LeMin = Evaluate("Min(IF(" & .Address & _
"=""" & Mot & """,ROW(" & .Address & ")))")
LeMax = Evaluate("Max(IF(" & .Address & _
"=""" & Mot & """,ROW(" & .Address & ")))")
End With
With Sh
MsgBox .Name & "!" & .Range(.Cells(LeMin, Rg.Column), _
.Cells(LeMax, Rg.Column)).Address
End With
End Sub
'----------------------------------------------------------------
MichD
"MichD" a écrit dans le message de groupe de discussion :
osbboi$gv7$
Même procédure, mais une meilleure formulation :
'------------------------------------------------------------
Sub test1()
Dim Rg As Range, Sh As Worksheet
Dim LeMin As Long, LeMax As Long
'Onglet feuille à adapter
Set Sh = Worksheets("Feuil1")
With Sh
'Plage de cellules à définir de tes données
Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
With Rg
LeMin = Evaluate("Min(IF(" & .Address & _
"=""kr"",ROW(" & .Address & ")))")
LeMax = Evaluate("Max(IF(" & .Address & _
"=""kr"",ROW(" & .Address & ")))")
End With
With Sh
MsgBox .Name & "!" & .Range(.Cells(LeMin, Rg.Column), _
.Cells(LeMax, Rg.Column)).Address
End With
End Sub
'------------------------------------------------------------
MichD
Apitos
Le #26448473
Bonjour MichD,
Merci pour tes précieuses réponses.
Pour gérer les erreurs, en cas ou Mot n'est pas trouvé.
Que fait-on ?
Merci.
MichD
Le #26448474
Une manière de procéder :
'------------------------------------------------------------
Sub test1()
Dim Rg As Range, Sh As Worksheet
Dim LeMin As Long, LeMax As Long
Dim Mot As String, R As Variant
On Error Resume Next
'Onglet feuille à adapter
Set Sh = Worksheets("Feuil1")
'Expression retenue
Mot = "Kr"
With Sh
Set Rg = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
End With
With Rg
LeMin = Evaluate("Min(IF(" & .Address & _
"=""" & Mot & """,ROW(" & .Address & ")))")
LeMax = Evaluate("Max(IF(" & .Address & _
"=""" & Mot & """,ROW(" & .Address & ")))")
End With
With Sh
R = .Name & "!" & .Range(.Cells(LeMin, Rg.Column), _
.Cells(LeMax, Rg.Column)).Address
If Err.Number <> 0 Then
Err = 0
MsgBox "Le """ & Mot & """ & n'a pas été trouvé."
Else
MsgBox R
End If
End With
End Sub
'------------------------------------------------------------
MichD
Apitos
Le #26448581
Merci infiniment MichD.
J'ai constaté que je peux tester avec la valeur de LeMax.
'--------------------
If LeMax = 0 Then
MsgBox "Le """ & Mot & """ n'a pas été trouvé"
End If
'--------------------
Publicité
Poster une réponse
Anonyme