Recherche valeur dans une colonne déterminée
Résolu/Fermé
volfoss
Messages postés
31
Date d'inscription
jeudi 21 juillet 2016
Statut
Membre
Dernière intervention
15 octobre 2023
-
1 août 2016 à 17:02
volfoss Messages postés 31 Date d'inscription jeudi 21 juillet 2016 Statut Membre Dernière intervention 15 octobre 2023 - 3 août 2016 à 11:10
volfoss Messages postés 31 Date d'inscription jeudi 21 juillet 2016 Statut Membre Dernière intervention 15 octobre 2023 - 3 août 2016 à 11:10
A voir également:
- Recherche valeur dans une colonne déterminée
- Déplacer une colonne excel - Guide
- Formule somme excel colonne - Guide
- Trier colonne excel - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Colonne word - Guide
2 réponses
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
524
1 août 2016 à 18:52
1 août 2016 à 18:52
Bonjour,
Essaie comme cela :
A+
Essaie comme cela :
Sub Test()
Dim Mot As String, Msg_Titre As String, Msg_Init As String, Msg_Corps As String, Adresse_Début As String
Dim Ws As Worksheet
Dim Cel As Range
Dim Nbre As Long
'Définition de la variable à rechercher
Mot = InputBox("Saisir le N° de fiche à chercher.", Title:="Recherche")
'Vérification si existante
If Mot = "" Then Exit Sub
Msg_Titre = "RECHERCHE"
Msg_Init = "Fiche recherchée : " & Mot & Chr(10) & Chr(10) & "Nombre de fiches trouvées : "
Msg_Corps = "Emplacement :" & Chr(10)
For Each Ws In Worksheets
Set Cel = Ws.Columns(15).Find(Mot, , xlValues, xlWhole)
If Not Cel Is Nothing Then
Adresse_Début = Cel.Address
Do
Msg_Corps = Msg_Corps & "Feuille " & Ws.Name & " : " & Cel.Address(0, 0) & Chr(10)
Nbre = Nbre + 1
Set Cel = Ws.Columns(15).FindNext(Cel)
Loop While Not Cel Is Nothing And Cel.Address <> Adresse_Début
End If
Next Ws
If Nbre > 0 Then
MsgBox Msg_Init & Nbre & Chr(10) & Chr(10) & Msg_Corps, vbOKOnly, Msg_Titre
Else
MsgBox "Aucune fiche trouvée.", " Message "
End If
End Sub
A+
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
524
1 août 2016 à 23:27
1 août 2016 à 23:27
Pour que la recherche soit effectuée seulement dans la feuille active :
A+
Sub Test()
Dim Mot As String, Msg_Titre As String, Msg_Init As String, Msg_Corps As String, Adresse_Début As String
Dim Ws As Worksheet
Dim Cel As Range
Dim Nbre As Long
'Définition de la variable à rechercher
Mot = InputBox("Saisir le N° de fiche à chercher.", Title:="Recherche")
'Vérification si existante
If Mot = "" Then Exit Sub
Msg_Titre = "RECHERCHE"
Msg_Init = "Fiche recherchée : " & Mot & Chr(10) & Chr(10) & "Nombre de fiches trouvées : "
Msg_Corps = "Emplacement :" & Chr(10)
With ActiveSheet
Set Cel = .Columns(15).Find(Mot, , xlValues, xlWhole)
If Not Cel Is Nothing Then
Adresse_Début = Cel.Address
Do
Msg_Corps = Msg_Corps & "Feuille " & .Name & " : " & Cel.Address(0, 0) & Chr(10)
Nbre = Nbre + 1
Set Cel = .Columns(15).FindNext(Cel)
Loop While Not Cel Is Nothing And Cel.Address <> Adresse_Début
End If
End With
If Nbre > 0 Then
MsgBox Msg_Init & Nbre & Chr(10) & Chr(10) & Msg_Corps, vbOKOnly, Msg_Titre
Else
MsgBox "Aucune fiche trouvée.", , " Message "
End If
End Sub
A+
volfoss
Messages postés
31
Date d'inscription
jeudi 21 juillet 2016
Statut
Membre
Dernière intervention
15 octobre 2023
2 août 2016 à 17:17
2 août 2016 à 17:17
J'ai modifier ma macro avec ton aide (je préfère avoir le résultat sous cette forme plutôt que le résultat donné par ta macro).
J'ai deux soucis:
1- si je ne choisi pas en début de macro ma feuille de travail la ligne de mon résultat trouvé est surligné en vert sur les deux feuilles en même temps
2- si je défini une seule feuille de travail (par ex mâles) ma macro fonctionne parfaitement pour un numéro de fiche contenu dans dans cette fiche et également pour un numéro qui n'existe pas du tout mais elle ne fait rien si le numéro se trouve sur l'autre feuille inactive (femelles) alors qu'elle devrait m'indiquer que la fiche n'existe pas.
Puis-je encore te solliciter ?
Ma macro :
Dim Mot As String
Dim Ws As Object
Dim Nbre As Long
Dim Cycle As Long
Dim Trouvé As Variant
Dim CellAddress As Variant
Dim MyValue As String
Worksheets("Mâles").Select
'remets colonne O en blanc
Columns("O:O").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'remet colonne O ligne titre en gris
Range("O1:O3").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.249946592608417
.PatternTintAndShade = 0
End With
'Définition de la variable à rechercher
Mot = InputBox("Saisir le N° de fiche à chercher.", Title:="Recherche")
'Vérification si existante
If Mot = "" Then Exit Sub
For Each Ws In Worksheets
Nbre = Nbre + Application.CountIf(Ws.UsedRange, "=" & Mot)
Next Ws
'Message en cas de mot inexistant
If Nbre = 0 Then
MyValue = MsgBox(" La fiche " & Mot & " n'est pas enregistrée ", vbOKOnly, " Message ")
Else
Cycle = 0
'Recherche et arrêt sur les cellules contenant le Mot
For Each Ws In Worksheets
With ActiveSheet
.Activate
Set Trouvé = .Columns(15).Find(Mot, , xlValues, xlWhole)
If Not Trouvé Is Nothing Then
CellAddress = Trouvé.Address
Do
Trouvé.Activate
MyValue = MsgBox(" La fiche " & Mot & " a été trouvée ", vbOKOnly, " Message ")
'colorier la case du résultat en vert
With Selection.Interior
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Exit Sub
If MyValue = vbNo Then Exit For
Set Trouvé = .Columns(15).FindNext(After:=Trouvé)
Loop While Not Trouvé Is Nothing And Trouvé.Address <> CellAddress
End If
End With
Next Ws
End If
J'ai deux soucis:
1- si je ne choisi pas en début de macro ma feuille de travail la ligne de mon résultat trouvé est surligné en vert sur les deux feuilles en même temps
2- si je défini une seule feuille de travail (par ex mâles) ma macro fonctionne parfaitement pour un numéro de fiche contenu dans dans cette fiche et également pour un numéro qui n'existe pas du tout mais elle ne fait rien si le numéro se trouve sur l'autre feuille inactive (femelles) alors qu'elle devrait m'indiquer que la fiche n'existe pas.
Puis-je encore te solliciter ?
Ma macro :
Dim Mot As String
Dim Ws As Object
Dim Nbre As Long
Dim Cycle As Long
Dim Trouvé As Variant
Dim CellAddress As Variant
Dim MyValue As String
Worksheets("Mâles").Select
'remets colonne O en blanc
Columns("O:O").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'remet colonne O ligne titre en gris
Range("O1:O3").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.249946592608417
.PatternTintAndShade = 0
End With
'Définition de la variable à rechercher
Mot = InputBox("Saisir le N° de fiche à chercher.", Title:="Recherche")
'Vérification si existante
If Mot = "" Then Exit Sub
For Each Ws In Worksheets
Nbre = Nbre + Application.CountIf(Ws.UsedRange, "=" & Mot)
Next Ws
'Message en cas de mot inexistant
If Nbre = 0 Then
MyValue = MsgBox(" La fiche " & Mot & " n'est pas enregistrée ", vbOKOnly, " Message ")
Else
Cycle = 0
'Recherche et arrêt sur les cellules contenant le Mot
For Each Ws In Worksheets
With ActiveSheet
.Activate
Set Trouvé = .Columns(15).Find(Mot, , xlValues, xlWhole)
If Not Trouvé Is Nothing Then
CellAddress = Trouvé.Address
Do
Trouvé.Activate
MyValue = MsgBox(" La fiche " & Mot & " a été trouvée ", vbOKOnly, " Message ")
'colorier la case du résultat en vert
With Selection.Interior
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Exit Sub
If MyValue = vbNo Then Exit For
Set Trouvé = .Columns(15).FindNext(After:=Trouvé)
Loop While Not Trouvé Is Nothing And Trouvé.Address <> CellAddress
End If
End With
Next Ws
End If
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
524
>
volfoss
Messages postés
31
Date d'inscription
jeudi 21 juillet 2016
Statut
Membre
Dernière intervention
15 octobre 2023
2 août 2016 à 19:46
2 août 2016 à 19:46
Bonjour,
Moi, j'ai un seul souci, c'est que je ne parviens pas à comprendre ce que tu souhaites faire.
La macro ne me suffit pas. Il me faudrait le fichier et quelques explications sur la finalité du traitement.
Tu peux joindre le fichier en utilisant https://www.cjoint.com/
A+
Moi, j'ai un seul souci, c'est que je ne parviens pas à comprendre ce que tu souhaites faire.
La macro ne me suffit pas. Il me faudrait le fichier et quelques explications sur la finalité du traitement.
Tu peux joindre le fichier en utilisant https://www.cjoint.com/
A+
volfoss
Messages postés
31
Date d'inscription
jeudi 21 juillet 2016
Statut
Membre
Dernière intervention
15 octobre 2023
>
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
2 août 2016 à 20:11
2 août 2016 à 20:11
Il s'agit d'un programme de gestion d'élevage d'oiseaux. J'ai une feuille avec un listing des mâles et ma macro permet d'effectuer une recherche suivant le numéro de fiche de l'oiseau. Chaque numéro est unique.
Actuellement ma macro me permet de rechercher la fiche et se positionne dans la cellule recherchée et surligne la cellule en vert. Tout ceci se réinitialise lors d'une nouvelle recherche.
Le soucis est le suivant:
si je tape un numéro de fiche qui se trouve sur la feuille "mâles" tout fonctionne il me le recherche
si je tape un numéro de fiche inexistant il me l'indique également
si je tape un numéro de fiche se trouvant sur la feuille "femelles" il ne m'indique rien alors que j'aimerais qu'il m'indique fichier inexistant dans cette feuille
Et inversement si je suis sur la feuille "femelles" par rapport aux fiches se trouvent sur la feuille "mâles".
J'ai essayer de lancer la macro en activant simultanément les feuilles "mâles" et "femelles" mais dans ce cas ci sur chaque feuille la même ligne est surlignée, donc sur une feuille le résultat est bon et sur l'autre au lieu de ne rien avoir on as un résultat faux.
http://www.cjoint.com/c/FHcskoGC3h0
Actuellement ma macro me permet de rechercher la fiche et se positionne dans la cellule recherchée et surligne la cellule en vert. Tout ceci se réinitialise lors d'une nouvelle recherche.
Le soucis est le suivant:
si je tape un numéro de fiche qui se trouve sur la feuille "mâles" tout fonctionne il me le recherche
si je tape un numéro de fiche inexistant il me l'indique également
si je tape un numéro de fiche se trouvant sur la feuille "femelles" il ne m'indique rien alors que j'aimerais qu'il m'indique fichier inexistant dans cette feuille
Et inversement si je suis sur la feuille "femelles" par rapport aux fiches se trouvent sur la feuille "mâles".
J'ai essayer de lancer la macro en activant simultanément les feuilles "mâles" et "femelles" mais dans ce cas ci sur chaque feuille la même ligne est surlignée, donc sur une feuille le résultat est bon et sur l'autre au lieu de ne rien avoir on as un résultat faux.
http://www.cjoint.com/c/FHcskoGC3h0
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
524
>
volfoss
Messages postés
31
Date d'inscription
jeudi 21 juillet 2016
Statut
Membre
Dernière intervention
15 octobre 2023
3 août 2016 à 09:43
3 août 2016 à 09:43
Bonjour,
Avec un fichier et quelques explications, tout devient plus simple (même le code).
https://www.cjoint.com/c/FHdhPu87EsH
A+
Avec un fichier et quelques explications, tout devient plus simple (même le code).
https://www.cjoint.com/c/FHdhPu87EsH
A+
volfoss
Messages postés
31
Date d'inscription
jeudi 21 juillet 2016
Statut
Membre
Dernière intervention
15 octobre 2023
>
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
3 août 2016 à 11:10
3 août 2016 à 11:10
ok
merci pour tout
merci pour tout
Modifié par volfoss le 1/08/2016 à 19:35
Par contre si la fiche n'existe pas encore ta macro plante sur la ligne:
MsgBox "Aucune fiche trouvée.", " Message "
Je vais essayer de modifier ta macro pour que le résultat de la recherche soit encadrer comme avec ma macro de départ car ta macro donne sous forme de texte l'emplacement de la fiche recherchée. Mais cela me conviens ainsi.
Je te remercie.
Amicalement.
1 août 2016 à 20:49