Organisation de procédure (recherche)
Résolu/Fermé
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
-
5 févr. 2018 à 13:47
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 9 févr. 2018 à 07:57
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 9 févr. 2018 à 07:57
A voir également:
- Organisation de procédure (recherche)
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche adresse - Guide
- Recherche musique - Guide
- Facebook recherche par nom et prénom ✓ - Forum Facebook
- Moteur de recherche 1fichier ✓ - Forum Réseaux sociaux
4 réponses
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
Modifié le 5 févr. 2018 à 15:17
Modifié le 5 févr. 2018 à 15:17
bonjour, cela me semble une bonne idée d'utiliser des boucles et des IF.
une moins bonne idée d'en faire une usine à gaz.
une moins bonne idée d'en faire une usine à gaz.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié le 7 févr. 2018 à 14:23
Modifié le 7 févr. 2018 à 14:23
Bonjour;
on peut certainement éviter la boucle dans les feuilles
Exemple à adapter
on peut certainement éviter la boucle dans les feuilles
If Application.CountIf(Columns("B"), "*" & Var) = 1 Then
lig = Columns("B").Find(what:=Var, LookIn:=xlValues).Row
MsgBox Range(Cells(lig, "A"), Cells(lig, "G"))
End If
Exemple à adapter
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
2
7 févr. 2018 à 16:09
7 févr. 2018 à 16:09
Merci à vous deux,
J'ai adapté le code mais comme il ne fonctionnait pas j'ai essayé de reprendre déjà tel quel celqui de yg_be.
Je ne parviens pas à lancer la macro, à moins d'enlever l'argument ("quoi", dans l'exemple).
Est-ce que je fais quelque chose de travers ?
Pour l'instant je suis dans un module simple...
J'ai adapté le code mais comme il ne fonctionnait pas j'ai essayé de reprendre déjà tel quel celqui de yg_be.
Je ne parviens pas à lancer la macro, à moins d'enlever l'argument ("quoi", dans l'exemple).
Est-ce que je fais quelque chose de travers ?
Pour l'instant je suis dans un module simple...
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
2
7 févr. 2018 à 16:18
7 févr. 2018 à 16:18
En enlevant l'argument, j'arrive à trouver ma variable quand elle se trouve sur la première page uniquement. Si elle est sur la deuxième ou sur une autre, la macro ne la détecte pas.
De plus, si elle se trouve en première page jj'ai une erreur d'exécution 91 sur la ligne suivante :
lig = Columns("B").Find(what:=Var, LookIn:=xlValues).Row
De plus, si elle se trouve en première page jj'ai une erreur d'exécution 91 sur la ligne suivante :
lig = Columns("B").Find(what:=Var, LookIn:=xlValues).Row
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
2
7 févr. 2018 à 16:23
7 févr. 2018 à 16:23
Je commente, je commente... :o)
En modifiant le type de variable lig en integer, c'est ok pour le deuxième problème.
Par contre le premier reste entier : Si ma valeur se trouve sur une autre page que la première, on ne la détecte pas.
Je cherche encore, et je commente si nécessaire...
En modifiant le type de variable lig en integer, c'est ok pour le deuxième problème.
Par contre le premier reste entier : Si ma valeur se trouve sur une autre page que la première, on ne la détecte pas.
Je cherche encore, et je commente si nécessaire...
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
2
7 févr. 2018 à 16:46
7 févr. 2018 à 16:46
J'ai réussi à contourner le problème avec la méthode de Michel pour éviter la bouche !
Bon, il faut sélectionner chaque page parcourue avec un sh.Select,
C'est vrai qu'avec un ScreenUpdating à False on ne remarque rien, mais je trouve que c'est moins propre.
Vous auriez une solution ?
Bon, il faut sélectionner chaque page parcourue avec un sh.Select,
C'est vrai qu'avec un ScreenUpdating à False on ne remarque rien, mais je trouve que c'est moins propre.
Vous auriez une solution ?
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
>
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
Modifié le 7 févr. 2018 à 18:02
Modifié le 7 févr. 2018 à 18:02
peut-être ainsi:
Private Function cherchedansunfichier(wb As Workbook, Var As String) As Boolean Dim sh As Worksheet, lig As Range For Each sh In wb.Sheets If Application.CountIf(sh.Columns("B"), "*" & Var) = 1 Then Set lig = sh.Columns("B").Find(what:=Var, LookIn:=xlValues).EntireRow 'trouvé MsgBox lig.Cells(1, 2).Value cherchedansunfichier = True Exit Function End If Next sh cherchedansunfichier = False End Function
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
8 févr. 2018 à 07:21
8 févr. 2018 à 07:21
Bonjour
une proposition à adapter à ton contexte
https://mon-partage.fr/f/wh79n738/
Tu dis...
une proposition à adapter à ton contexte
https://mon-partage.fr/f/wh79n738/
Tu dis...
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
2
8 févr. 2018 à 12:32
8 févr. 2018 à 12:32
Bonjour à vous deux, et merci encore pour votre aide.
Je crains que la solution de yg_be (set lig) ne soit pas efficace : Si la valeur se trouve en deuxième feuille on ne la détecte toujours pas.
Quant à la proposition de Michel, malheureusement je ne peux pas y accéder : Le lien est bloqué depuis mon bureau, je pense pour des raisons de sécurité.
Je crains que la solution de yg_be (set lig) ne soit pas efficace : Si la valeur se trouve en deuxième feuille on ne la détecte toujours pas.
Quant à la proposition de Michel, malheureusement je ne peux pas y accéder : Le lien est bloqué depuis mon bureau, je pense pour des raisons de sécurité.
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
8 févr. 2018 à 14:43
8 févr. 2018 à 14:43
avec ceci, je trouve en deuxième feuille:
Private Function cherchedansunfichier(wb As Workbook, Var As String) As Boolean Dim sh As Worksheet, lig As Range For Each sh In wb.Sheets If Application.CountIf(sh.Columns("B"), "*" & Var) = 1 Then Set lig = sh.Columns("B").Find(what:=Var, LookIn:=xlValues).EntireRow 'trouvé MsgBox lig.Cells(1, 2).Value cherchedansunfichier = True Exit Function End If Next sh cherchedansunfichier = False End Function
1Globule
Messages postés
62
Date d'inscription
mercredi 4 mai 2016
Statut
Membre
Dernière intervention
28 mars 2019
2
8 févr. 2018 à 16:34
8 févr. 2018 à 16:34
Au temps pour moi, en adaptant j'ai oublié de modifier ma variable.
Je crois bien que c'est tout bon !
Un grand merci à toi et à Michel pour le temps consacré à aider les autres.
Je clôture le sujet.
Je crois bien que c'est tout bon !
Un grand merci à toi et à Michel pour le temps consacré à aider les autres.
Je clôture le sujet.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié le 8 févr. 2018 à 17:18
Modifié le 8 févr. 2018 à 17:18
Bon, j'ai encore perdu plusieurs heures à vouloir aider!!!
Dans le cas de blocage de pièces jointes, tu passes en message personnel et tu donnes à ton interlocuteur une adresse où tu peux les recevoir
Adieu Globule
Dans le cas de blocage de pièces jointes, tu passes en message personnel et tu donnes à ton interlocuteur une adresse où tu peux les recevoir
Adieu Globule
yg_be
Messages postés
23336
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
1 551
>
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
8 févr. 2018 à 17:44
8 févr. 2018 à 17:44
michel_m, ta suggestion #6 a été très utile.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié le 9 févr. 2018 à 07:59
Modifié le 9 févr. 2018 à 07:59
je m'adressais à globule et uniquement à lui, donc...
5 févr. 2018 à 15:30
For p = 1 To 2 ' Boucler sur 2 classeurs
If p = 1 Then ' Savoir s'il y a 3 feuilles ou un nombre indéterminé
a = 3
Else
a = Sheets.Count
End If
For i = 1 To a ' Boucler sur les x feuilles
Sheets(i).Select
For j = 2 To Cells(Rows.Count, 1).End(xlUp).Row ' Boucler sur toutes les lignes
If Cells(j, 2).Value Like "*" & VAR Then ' Chercher la variable
r = 1 ' Mettre un indicateur si valeur est trouvée
' Récupérer toutes les infos
End If
Next
Next
If r = 1 Then ' Si la valeur est trouvée, sortir de la boucle
Exit For
Else
s = 1 ' Sinon mettre un indicateur quand le deuxième classeur s'ouvre
Workbooks.Open Filename:="Documents/Archives.xlsx", ReadOnly:=True' Ouvrir le deuxième classeur
End If
Next
If s = 1 Then ' Si le deuxième classeur est ouvert, le fermer
Windows("Archives.xlsx").Close
End If
Modifié le 5 févr. 2018 à 16:21
7 févr. 2018 à 12:28
Je vais tester et je te tiens informé.
C'est très gentil en tout cas.
7 févr. 2018 à 14:01
A première vue, il me semble qu'il faudrait boucler sur les lignes non vides pour gagner du temps, et ensuite j'aurais besoin de sélectionner la cellule concernée quand la valeur est trouvée.
Je vais essayer de chercher un peu ce qui pose problème.