Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/01/2012, 01h21   #1
Invité de passage
 
Homme
Assistant aux utilisateurs
Inscription : octobre 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Assistant aux utilisateurs

Informations forums :
Inscription : octobre 2011
Messages : 27
Points : 2
Points : 2
Par défaut Recherche dans un classeur

Bonjour,

Je viens vers vous pour un peu d'aide pour finir un fichier.

J'ai besoin de faire une recherche d'une valeur qui vient d'un combobox et qui est actuellement dans une case C2 d'une feuille qui s’appelle "Resultat". La recherche va se faire dans 7 feuilles différentes qui se nomment "Lundi", "Mardi", "Mercredi" etc etc jusque "Dimanche"

pour arranger le tout je peux trouver plusieurs valeur et j'aimerai les mettre dans la feuille "resutat" les un en dessous des autres.

J'ai tester avec du find mais j'arrive a rien de concluant.

Merci pour votre aide
Naru80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 09h08   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 919
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 919
Points : 7 235
Points : 7 235
Bonjour,

Regardes le code ci-dessous, il devrait te permettre d'arriver à faire ce que tu souhaites
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub Cherchemot()
 
Dim sh As Worksheet
Dim Rg As Range
Dim i As Long
Dim Adresse As String
Dim strSearch As String
 
i = 4
 
'mot a chercher
strSearch = Sheets("resultat").Range("C2").Value
 
'Boucle sur chaque feuille du classeur
For Each sh In ThisWorkbook.Worksheets
 
    'Ne cherche pas dans la feuille recevant le résultat
    If sh.Name <> "resultat" Then
 
        'Recherche le mot dans la feuille
        Set Rg = sh.Cells.Find(what:=strSearch, lookat:=xlWhole)
 
        'Si on trouve le mot
        If Not Rg Is Nothing Then
            Adresse = Rg.Address
            Do
                'Inscription de la feuille et adresse de la cellule
                Sheets("resultat").Range("A" & i).Value = sh.Name
                Sheets("resultat").Range("B" & i).Value = Rg.Address
                i = i + 1
                'Recherche suivant dans la meme feuille
                Set Rg = sh.Cells.FindNext
            Loop While Not Rg Is Nothing And Rg.Address <> Adresse
        End If
 
    End If
 
Next
 
End Sub
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/01/2012, 09h55   #3
Invité de passage
 
Homme
Assistant aux utilisateurs
Inscription : octobre 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Assistant aux utilisateurs

Informations forums :
Inscription : octobre 2011
Messages : 27
Points : 2
Points : 2
Merci pour ta réponse en effet cela fonctionne nickel.

J'ai modifié
Code :
Sheets("resultat").Range("B" & i).Value = Rg.Address
par
Code :
Sheets("resultat").Range("B" & i).Value = Rg.Value
pour avoir le nom de la personne.

Mais j'aimerai rajouter sur les colonnes a coté ce que j'ai dans les autres pages. C'est a dire quand il a fait la recherche et qu'il trouve il m’écrit donc dans la colonne B le nom et il prend les valeurs des colonnes C à G pour les mettre également dans la feuille Resultat.

Je viens d'essayer avec un Offset pour le décalage et dire qu'il copie mais rien de concluant.
Naru80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 10h01   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 919
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 919
Points : 7 235
Points : 7 235
Citation:
Mais j'aimerai rajouter sur les colonnes a coté ce que j'ai dans les autres pages. C'est a dire quand il a fait la recherche et qu'il trouve il m’écrit donc dans la colonne B le nom et il prend les valeurs des colonnes C à G pour les mettre également dans la feuille Resultat.
Ca devrait etre quelques chose comme ca
(pas testé)
Code :
1
2
Sh.Range("C" & Rg.Row & ":G" & Rg.Row).Copy
Sheets("resultat").Range("C"  & i).PasteSpecial
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/01/2012, 10h51   #5
Invité de passage
 
Homme
Assistant aux utilisateurs
Inscription : octobre 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Assistant aux utilisateurs

Informations forums :
Inscription : octobre 2011
Messages : 27
Points : 2
Points : 2
Encore une fois rapide et efficace c'est nickel.

Il reste juste un détail si la valeur recherché n'est pas trouvé il tourne en boucle sur la feuille"Resultat" ou il trouve la réponse en C2 et il me l’écrit sur toutes les ligne a la suite.

Peux ton mettre une condition avec un message d'erreur si on ne trouve pas la recherche ?
Naru80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 11h17   #6
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 919
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 919
Points : 7 235
Points : 7 235
Citation:
Il reste juste un détail si la valeur recherché n'est pas trouvé il tourne en boucle sur la feuille"Resultat" ou il trouve la réponse en C2 et il me l’écrit sur toutes les ligne a la suite.
Si le code ne trouve rien, il n'y aura rien de transféré dans la feuille resultat.


Citation:
Peux ton mettre une condition avec un message d'erreur si on ne trouve pas la recherche ?
Un test qui vérifie si la cellule A4 de la feuille resultat est vide devrait suffire pour envoyer le message
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 11h33   #7
Invité de passage
 
Homme
Assistant aux utilisateurs
Inscription : octobre 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Assistant aux utilisateurs

Informations forums :
Inscription : octobre 2011
Messages : 27
Points : 2
Points : 2
Citation:
Envoyé par jfontaine Voir le message
Si le code ne trouve rien, il n'y aura rien de transféré dans la feuille resultat.
Bin c'est la le probleme il affiche en boucle plein de chose car il trouve le résultat dans la case C2 sur la feuille resultat
Alors que logiquement il devrait faire les recherches que dans le pages
lundi, mardi, mercredi, jeudi, vendredi, samedi et dimanche


Citation:
Un test qui vérifie si la cellule A4 de la feuille resultat est vide devrait suffire pour envoyer le message
Bon en effet c'est pas compliqué je sais le faire
Naru80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 11h43   #8
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 919
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 919
Points : 7 235
Points : 7 235
Est ce que le nom de la feuille sur la ligne ci dessous est bien orthographié
Code :
If sh.Name <> "resultat" Then
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/01/2012, 12h21   #9
Invité de passage
 
Homme
Assistant aux utilisateurs
Inscription : octobre 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Assistant aux utilisateurs

Informations forums :
Inscription : octobre 2011
Messages : 27
Points : 2
Points : 2
En effet c'est a cause de ça tu es un chef


Au lieu de lui dire de rechercher dans toutes les feuilles sauf "Resultat" je voudrais lui dire de rechercher uniquement dans certaine feuille.

J'ai donc modifié le code comme ci dessous
Code :
If sh.Name = "Lundi" Or "Mardi" Or "Mercredi" Or "Jeudi" Or "Vendredi" Or "Samedi" Or "Dimanche" Then
Mais j'ai un message d'erreur 13 avec une incompatibilité de type
Naru80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 12h52   #10
Invité de passage
 
Homme
Assistant aux utilisateurs
Inscription : octobre 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Assistant aux utilisateurs

Informations forums :
Inscription : octobre 2011
Messages : 27
Points : 2
Points : 2
C'est bon j'ai trouvé
Code :
If sh.Name = "Lundi" Or sh.Name = "Mardi" Or sh.Name = "Mercredi" Or sh.Name = "Jeudi" Or sh.Name = "Vendredi" Or sh.Name = "Samedi" Or sh.Name = "Dimanche" Then
Merci pour ton aide
Naru80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 13h58   #11
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 919
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 919
Points : 7 235
Points : 7 235
une autre méthode

Code :
if Instr("Lundi,Mardi,Mercredi,Jeudi,Vendredi", sh.name)>0 then
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/01/2012, 14h20   #12
Invité de passage
 
Homme
Assistant aux utilisateurs
Inscription : octobre 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Assistant aux utilisateurs

Informations forums :
Inscription : octobre 2011
Messages : 27
Points : 2
Points : 2
Je relance mon post car je viens de m'apercevoir d'une erreur. il ne fait la recherche que sur le premier mot qu'il trouve dans la feuille.

Donc le code fonctionne très bien si il n'y a que 1 fois le mot a trouvé dans chaque feuille mais des qu'il y a 2 ou 3 fois le nom bien sa ne fonctionne plus.
l'erreur doit etre dans la boucle Do mais je ne sais pas ou



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Private Sub CommandButtonvalider_Click()
Dim sh As Worksheet
Dim Rg As Range
Dim i As Long
Dim Adresse As String
Dim strSearch As String
RechercheSuiviCC.Hide
Sheets("Parametre").Visible = False
Sheets("ResultatSuiviCC").Visible = True
 
 
    Sheets("ResultatSuiviCC").Select
    Range("A4:H300").Select
    Selection.Delete Shift:=xlUp
    Range("A4").Select
    Range("C2").Value = ComboBoxSuiviCC.Value
 
i = 4
 
'mot a chercher
strSearch = Sheets("ResultatSuiviCC").Range("C2").Value '
 
'Boucle sur chaque feuille du classeur
 For Each sh In ThisWorkbook.Worksheets
 
 'Sheets ("Lundi" or "Mardi" or "Mercredi" or "Jeudi" or "Vendredi" or "Samedi" or "Dimanche")
 
    'Ne cherche pas dans la feuille recevant le résultat
    If sh.Name = "Lundi" Or sh.Name = "Mardi" Or sh.Name = "Mercredi" Or sh.Name = "Jeudi" Or sh.Name = "Vendredi" Or sh.Name = "Samedi" Or sh.Name = "Dimanche" Then
 
        'Recherche le mot dans la feuille
        Set Rg = sh.Cells.Find(What:=strSearch, LookAt:=xlWhole)
 
        'Si on trouve le mot
        If Not Rg Is Nothing Then
            Adresse = Rg.Address
            Do
                'Inscription de la feuille et adresse de la cellule
                Sheets("resultatSuiviCC").Range("A" & i).Value = sh.Name
                Sheets("resultatSuiviCC").Range("B" & i).Value = Rg.Value
                sh.Range("C" & Rg.Row & ":H" & Rg.Row).Copy
                Sheets("resultatSuiviCC").Range("C" & i).PasteSpecial
 
                i = i + 1
                'Recherche suivant dans la meme feuille
                Set Rg = sh.Cells.FindNext
                Loop While Rg Is Nothing And Rg.Address <> Adresse
        End If
 
    End If
 
Next
 
If Range("B4") = "" Then
    MsgBox "Aucune action n'a été effectué pour les conseillers du Suivi CC"
End If
 
End Sub
Naru80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 14h05   #13
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 919
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 919
Points : 7 235
Points : 7 235
le code, recherche le mot se trouvant dans la cellule C2 de l'onglet ResultatSuiviCC dans les feuilles ayant un nom = à un jour de la semaine.
Chaque résultat trouvé est copié et ajouté dans la feuille resultatSuiviCC.

La boucle pour rechercher tous les mots dans un onglet est bien en place.

As tu essayé de debuguer en mode pas a pas pour comprendre ce qui se passe?
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 17h56   #14
Invité de passage
 
Homme
Assistant aux utilisateurs
Inscription : octobre 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Assistant aux utilisateurs

Informations forums :
Inscription : octobre 2011
Messages : 27
Points : 2
Points : 2
Oui j'ai bien essayé le pas a pas.

Il trouve en effet le mot recherché dans les onglet de la semaine.

Mais des qu'il a trouvé le premier on dirait qu'il ne cherche pas si il y en a d'autre et qu'il sort de la boucle pour aller a l'onglet suivant

donc pour moi sa bloque a l'emplacement suivant :
Code :
1
2
Set Rg = sh.Cells.FindNext
                Loop While Rg Is Nothing And Rg.Address <> Adresse
Naru80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 19h24   #15
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 919
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 919
Points : 7 235
Points : 7 235
Yes, je vois

Essais comme cela
Code :
Set Rg = sh.Cells.FindNext(Rg)
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/01/2012, 19h45   #16
Invité de passage
 
Homme
Assistant aux utilisateurs
Inscription : octobre 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Assistant aux utilisateurs

Informations forums :
Inscription : octobre 2011
Messages : 27
Points : 2
Points : 2
J'avais déjà testé en rajoutant la variable après avoir lui sur différents forum mais cela ne fonctionne pas
Naru80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 19h49   #17
Invité de passage
 
Homme
Assistant aux utilisateurs
Inscription : octobre 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Assistant aux utilisateurs

Informations forums :
Inscription : octobre 2011
Messages : 27
Points : 2
Points : 2
bon j'ai rien dit je viens de restester et ça fonctionne

Apparemment sur 2003 (au boulot) c'est pas bon pas sur 2007 sa fonctionne (chez moi)
Naru80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h07.


 
 
 
 
Partenaires

Hébergement Web