J'ai un tableau structuré nommé TblOpérations comme ceci
Date NomValeur Soldée
01/05/2022 Orange 2
03/05/2022 Vert P12
03/05/2022 Bleu 3
03/05/2022 Orange
04/05/2022 Bleu
05/05/2022 Vert 20
06/05/2022 Jaune 7
07/05/2022 jaune P9
Je pars d'une date (LaDate="05/05/2022") et d'une couleur, je cherche
la ligne qui souscrit aux 3 conditions suivantes :
- Date <= LaDate
- NomValeur = couleur
- Soldée = numéric
Par exemple pour le "05/05/2022" Bleu je veux récupérer 3.
Comment puis je faire ?
Peut être un truc Í base de .find avec un test puis un .FindNext en
allant vers le haut ... et en s'arrétant quand les conditions sont lÍ .
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Le 01/05/22 Í 12:45, LaurentC a écrit :
Bonjour Í tous J'ai un tableau structuré nommé TblOpérations comme ceci Date   NomValeur   Soldée 01/05/2022   Orange   2 03/05/2022   Vert   P12 03/05/2022   Bleu   3 03/05/2022   Orange 04/05/2022   Bleu 05/05/2022   Vert   20 06/05/2022   Jaune   7 07/05/2022   jaune   P9 Je pars d'une date (LaDate="05/05/2022") et d'une couleur, je cherche la ligne qui souscrit aux 3 conditions suivantes : - Date <= LaDate - NomValeur = couleur - Soldée = numéric Par exemple pour le "05/05/2022" Bleu je veux récupérer 3. Comment puis je faire ? Peut être un truc Í base de .find avec un test puis un .FindNext en allant vers le haut ... et en s'arrétant quand les conditions sont lÍ . Je vous remercie pour votre aide. @+Laurent
suivant l'exemple du classeur publié, tu peux obtenir le résultat comme ceci : '------------------------------------ Sub test1() Dim Sh As Worksheet, Trouve As Range Dim Rg As Range, Adr As String, Résultat As String 'Feuil1 est le nom de l'onglet de la feuille o͹ sont tes données Set Sh = Worksheets("Feuil1") With Sh 'identification de la plage des dates Set Rg = .Range("A2:A" & Range("A" & .Rows.Count).End(xlUp).Row) End With With Rg 'Recherche la date du critère de la cellule E1 Set Trouve = .Find(What:=Sh.Range("E1").Value, After:=Sh.Range("A" & Rg.Rows.Count), LookIn:=xlFormulas) If Not Trouve Is Nothing Then 'S il trouve, Adr = Trouve.Address 'Boucle sur la plage des dates Do 'vérifie si la cellule de droite contient le critère en F1 If Trouve.Offset(, 1) = Sh.Range("F1") Then Résultat = Trouve.Offset(, 2) & Résultat & ", " 'Si oui, on sort le résultat 'la boucle s'arrête avec Exit do 'Si tu le désires tu peux scanner toute la colonne 'pour savoir si tu as plusieurs occurrences. 'Exit Do Else Set Trouve = .FindNext(Trouve) End If Loop Until Trouve.Address = Adr End If End With If Résultat <> "" Then Résultat = Left(Résultat, Len(Résultat) - 2) MsgBox "Les données possibles sont : " & Résultat & " soldé(s)." Else MsgBox "Aucune donnée ne correspond aux critères." End If End Sub '------------------------------------ MichD
Le 01/05/22 Í 12:45, LaurentC a écrit :
Bonjour Í tous
J'ai un tableau structuré nommé TblOpérations comme ceci
Date   NomValeur   Soldée
01/05/2022   Orange   2
03/05/2022   Vert   P12
03/05/2022   Bleu   3
03/05/2022Â Â Â Orange
04/05/2022Â Â Â Bleu
05/05/2022   Vert   20
06/05/2022   Jaune   7
07/05/2022   jaune   P9
Je pars d'une date (LaDate="05/05/2022") et d'une couleur, je cherche la
ligne qui souscrit aux 3 conditions suivantes :
- Date <= LaDate
- NomValeur = couleur
- Soldée = numéric
Par exemple pour le "05/05/2022" Bleu je veux récupérer 3.
Comment puis je faire ?
Peut être un truc Í base de .find avec un test puis un .FindNext en
allant vers le haut ... et en s'arrétant quand les conditions sont lÍ .
Je vous remercie pour votre aide.
@+Laurent
suivant l'exemple du classeur publié, tu peux obtenir le résultat comme
ceci :
'------------------------------------
Sub test1()
Dim Sh As Worksheet, Trouve As Range
Dim Rg As Range, Adr As String, Résultat As String
'Feuil1 est le nom de l'onglet de la feuille o͹ sont tes données
Set Sh = Worksheets("Feuil1")
With Sh
'identification de la plage des dates
Set Rg = .Range("A2:A" & Range("A" & .Rows.Count).End(xlUp).Row)
End With
With Rg
'Recherche la date du critère de la cellule E1
Set Trouve = .Find(What:=Sh.Range("E1").Value, After:=Sh.Range("A"
& Rg.Rows.Count), LookIn:=xlFormulas)
If Not Trouve Is Nothing Then
'S il trouve,
Adr = Trouve.Address
'Boucle sur la plage des dates
Do
'vérifie si la cellule de droite contient le critère en F1
If Trouve.Offset(, 1) = Sh.Range("F1") Then
Résultat = Trouve.Offset(, 2) & Résultat & ", "
'Si oui, on sort le résultat
'la boucle s'arrête avec Exit do
'Si tu le désires tu peux scanner toute la colonne
'pour savoir si tu as plusieurs occurrences.
'Exit Do
Else
Set Trouve = .FindNext(Trouve)
End If
Loop Until Trouve.Address = Adr
End If
End With
If Résultat <> "" Then
Résultat = Left(Résultat, Len(Résultat) - 2)
MsgBox "Les données possibles sont : " & Résultat & " soldé(s)."
Else
MsgBox "Aucune donnée ne correspond aux critères."
End If
End Sub
'------------------------------------
Bonjour Í tous J'ai un tableau structuré nommé TblOpérations comme ceci Date   NomValeur   Soldée 01/05/2022   Orange   2 03/05/2022   Vert   P12 03/05/2022   Bleu   3 03/05/2022   Orange 04/05/2022   Bleu 05/05/2022   Vert   20 06/05/2022   Jaune   7 07/05/2022   jaune   P9 Je pars d'une date (LaDate="05/05/2022") et d'une couleur, je cherche la ligne qui souscrit aux 3 conditions suivantes : - Date <= LaDate - NomValeur = couleur - Soldée = numéric Par exemple pour le "05/05/2022" Bleu je veux récupérer 3. Comment puis je faire ? Peut être un truc Í base de .find avec un test puis un .FindNext en allant vers le haut ... et en s'arrétant quand les conditions sont lÍ . Je vous remercie pour votre aide. @+Laurent
suivant l'exemple du classeur publié, tu peux obtenir le résultat comme ceci : '------------------------------------ Sub test1() Dim Sh As Worksheet, Trouve As Range Dim Rg As Range, Adr As String, Résultat As String 'Feuil1 est le nom de l'onglet de la feuille o͹ sont tes données Set Sh = Worksheets("Feuil1") With Sh 'identification de la plage des dates Set Rg = .Range("A2:A" & Range("A" & .Rows.Count).End(xlUp).Row) End With With Rg 'Recherche la date du critère de la cellule E1 Set Trouve = .Find(What:=Sh.Range("E1").Value, After:=Sh.Range("A" & Rg.Rows.Count), LookIn:=xlFormulas) If Not Trouve Is Nothing Then 'S il trouve, Adr = Trouve.Address 'Boucle sur la plage des dates Do 'vérifie si la cellule de droite contient le critère en F1 If Trouve.Offset(, 1) = Sh.Range("F1") Then Résultat = Trouve.Offset(, 2) & Résultat & ", " 'Si oui, on sort le résultat 'la boucle s'arrête avec Exit do 'Si tu le désires tu peux scanner toute la colonne 'pour savoir si tu as plusieurs occurrences. 'Exit Do Else Set Trouve = .FindNext(Trouve) End If Loop Until Trouve.Address = Adr End If End With If Résultat <> "" Then Résultat = Left(Résultat, Len(Résultat) - 2) MsgBox "Les données possibles sont : " & Résultat & " soldé(s)." Else MsgBox "Aucune donnée ne correspond aux critères." End If End Sub '------------------------------------ MichD
LaurentC
MichD a présenté l'énoncé suivant :
Le 01/05/22 Í 12:45, LaurentC a écrit :
Bonjour Í tous J'ai un tableau structuré nommé TblOpérations comme ceci Date   NomValeur   Soldée 01/05/2022   Orange   2 03/05/2022   Vert   P12 03/05/2022   Bleu   3 03/05/2022   Orange 04/05/2022   Bleu 05/05/2022   Vert   20 06/05/2022   Jaune   7 07/05/2022   jaune   P9 Je pars d'une date (LaDate="05/05/2022") et d'une couleur, je cherche la ligne qui souscrit aux 3 conditions suivantes : - Date <= LaDate - NomValeur = couleur - Soldée = numéric Par exemple pour le "05/05/2022" Bleu je veux récupérer 3. Comment puis je faire ? Peut être un truc Í base de .find avec un test puis un .FindNext en allant vers le haut ... et en s'arrétant quand les conditions sont lÍ . Je vous remercie pour votre aide. @+Laurent
suivant l'exemple du classeur publié, tu peux obtenir le résultat comme ceci : '------------------------------------ Sub test1() Dim Sh As Worksheet, Trouve As Range Dim Rg As Range, Adr As String, Résultat As String 'Feuil1 est le nom de l'onglet de la feuille o͹ sont tes données Set Sh = Worksheets("Feuil1") With Sh 'identification de la plage des dates Set Rg = .Range("A2:A" & Range("A" & .Rows.Count).End(xlUp).Row) End With With Rg 'Recherche la date du critère de la cellule E1 Set Trouve = .Find(What:=Sh.Range("E1").Value, After:=Sh.Range("A" & Rg.Rows.Count), LookIn:=xlFormulas) If Not Trouve Is Nothing Then 'S il trouve, Adr = Trouve.Address 'Boucle sur la plage des dates Do 'vérifie si la cellule de droite contient le critère en F1 If Trouve.Offset(, 1) = Sh.Range("F1") Then Résultat = Trouve.Offset(, 2) & Résultat & ", " 'Si oui, on sort le résultat 'la boucle s'arrête avec Exit do 'Si tu le désires tu peux scanner toute la colonne 'pour savoir si tu as plusieurs occurrences. 'Exit Do Else Set Trouve = .FindNext(Trouve) End If Loop Until Trouve.Address = Adr End If End With If Résultat <> "" Then Résultat = Left(Résultat, Len(Résultat) - 2) MsgBox "Les données possibles sont : " & Résultat & " soldé(s)." Else MsgBox "Aucune donnée ne correspond aux critères." End If End Sub '------------------------------------ MichD
Excellent, gros merci. @+Laurent
MichD a présenté l'énoncé suivant :
Le 01/05/22 Í 12:45, LaurentC a écrit :
Bonjour Í tous
J'ai un tableau structuré nommé TblOpérations comme ceci
Date   NomValeur   Soldée
01/05/2022   Orange   2
03/05/2022   Vert   P12
03/05/2022   Bleu   3
03/05/2022Â Â Â Orange
04/05/2022Â Â Â Bleu
05/05/2022   Vert   20
06/05/2022   Jaune   7
07/05/2022   jaune   P9
Je pars d'une date (LaDate="05/05/2022") et d'une couleur, je cherche la
ligne qui souscrit aux 3 conditions suivantes :
- Date <= LaDate
- NomValeur = couleur
- Soldée = numéric
Par exemple pour le "05/05/2022" Bleu je veux récupérer 3.
Comment puis je faire ?
Peut être un truc Í base de .find avec un test puis un .FindNext en allant
vers le haut ... et en s'arrétant quand les conditions sont lÍ .
Je vous remercie pour votre aide.
@+Laurent
suivant l'exemple du classeur publié, tu peux obtenir le résultat comme ceci
:
'------------------------------------
Sub test1()
Dim Sh As Worksheet, Trouve As Range
Dim Rg As Range, Adr As String, Résultat As String
'Feuil1 est le nom de l'onglet de la feuille o͹ sont tes données
Set Sh = Worksheets("Feuil1")
With Sh
'identification de la plage des dates
Set Rg = .Range("A2:A" & Range("A" & .Rows.Count).End(xlUp).Row)
End With
With Rg
'Recherche la date du critère de la cellule E1
Set Trouve = .Find(What:=Sh.Range("E1").Value, After:=Sh.Range("A" &
Rg.Rows.Count), LookIn:=xlFormulas)
If Not Trouve Is Nothing Then
'S il trouve,
Adr = Trouve.Address
'Boucle sur la plage des dates
Do
'vérifie si la cellule de droite contient le critère en F1
If Trouve.Offset(, 1) = Sh.Range("F1") Then
Résultat = Trouve.Offset(, 2) & Résultat & ", "
'Si oui, on sort le résultat
'la boucle s'arrête avec Exit do
'Si tu le désires tu peux scanner toute la colonne
'pour savoir si tu as plusieurs occurrences.
'Exit Do
Else
Set Trouve = .FindNext(Trouve)
End If
Loop Until Trouve.Address = Adr
End If
End With
If Résultat <> "" Then
Résultat = Left(Résultat, Len(Résultat) - 2)
MsgBox "Les données possibles sont : " & Résultat & " soldé(s)."
Else
MsgBox "Aucune donnée ne correspond aux critères."
End If
End Sub
'------------------------------------
Bonjour Í tous J'ai un tableau structuré nommé TblOpérations comme ceci Date   NomValeur   Soldée 01/05/2022   Orange   2 03/05/2022   Vert   P12 03/05/2022   Bleu   3 03/05/2022   Orange 04/05/2022   Bleu 05/05/2022   Vert   20 06/05/2022   Jaune   7 07/05/2022   jaune   P9 Je pars d'une date (LaDate="05/05/2022") et d'une couleur, je cherche la ligne qui souscrit aux 3 conditions suivantes : - Date <= LaDate - NomValeur = couleur - Soldée = numéric Par exemple pour le "05/05/2022" Bleu je veux récupérer 3. Comment puis je faire ? Peut être un truc Í base de .find avec un test puis un .FindNext en allant vers le haut ... et en s'arrétant quand les conditions sont lÍ . Je vous remercie pour votre aide. @+Laurent
suivant l'exemple du classeur publié, tu peux obtenir le résultat comme ceci : '------------------------------------ Sub test1() Dim Sh As Worksheet, Trouve As Range Dim Rg As Range, Adr As String, Résultat As String 'Feuil1 est le nom de l'onglet de la feuille o͹ sont tes données Set Sh = Worksheets("Feuil1") With Sh 'identification de la plage des dates Set Rg = .Range("A2:A" & Range("A" & .Rows.Count).End(xlUp).Row) End With With Rg 'Recherche la date du critère de la cellule E1 Set Trouve = .Find(What:=Sh.Range("E1").Value, After:=Sh.Range("A" & Rg.Rows.Count), LookIn:=xlFormulas) If Not Trouve Is Nothing Then 'S il trouve, Adr = Trouve.Address 'Boucle sur la plage des dates Do 'vérifie si la cellule de droite contient le critère en F1 If Trouve.Offset(, 1) = Sh.Range("F1") Then Résultat = Trouve.Offset(, 2) & Résultat & ", " 'Si oui, on sort le résultat 'la boucle s'arrête avec Exit do 'Si tu le désires tu peux scanner toute la colonne 'pour savoir si tu as plusieurs occurrences. 'Exit Do Else Set Trouve = .FindNext(Trouve) End If Loop Until Trouve.Address = Adr End If End With If Résultat <> "" Then Résultat = Left(Résultat, Len(Résultat) - 2) MsgBox "Les données possibles sont : " & Résultat & " soldé(s)." Else MsgBox "Aucune donnée ne correspond aux critères." End If End Sub '------------------------------------ MichD