Bouton pour executer une recherche sur plusieurs feuilles

Bonjour à tous,

Avant tout, merci a ceux qui m'ont aidé auparavant, il y à quelques mois maintenant!!

Mon problème aujourd'hui est que j'ai un bouton sur mar feuille excel, et il faudrai que, en appuyant dessus cela me fasse une recherche de "Nom" sur les autres feuilles afin d'avoir la ou les personnes correspondant au nom rentrer par la personne.

Mon réel problème et que je ne sais pas ou coder en VB ( Dans la feuille, "dans le bouton").

Je reste continuellement un débutant en Excel car je ne l'utilise que très rarement!

Si vous savez comment je dois faire, je vous en remercie d'avance.

Cordialement,

Kris

-- Ven Juil 16, 2010 10:13 am --

J'ai réussi a écrire un ptit bout de code dans le "(Général)", mais ca ne marche pas!

Sub BtnExec_Clic()

Dim RechNom As String

RechNom = Feuil1.Cells("C6")

If Rechnom = Feuil2.range("D4:D60") Then

Feuil1.Range("G6:J6") = Feuil2.Range("D.Rechnom:D+3)

End if

End Sub

Alors mon erreur est qu'en fait même avec quelque chose écrit dans feuil1.C6, et bien, au niveau de RechNom=.... il n'y à aucune valeur.

Ai-je fais le code au bon endrois?

Ai-je fais une erreur de code(surement)?

Bonjour kris0311,

Peux-tu envoyer un bout de fichier pour que l'on adapte un code ? Car là on connait pas trop la structure de tes données.

Oui bien sur, par contre j'ai supprimer quelques données 'nom, numero de tel...)

388anntest.zip (13.65 Ko)

Cordialement,

Kris

Re,

Voici une solution :

Sub BtnExec_Clic()
Dim RechNom As String, firstAddress As String
Dim i As Byte, derlign As Long, derLignTemp As Long
Dim c As Range

RechNom = Sheets("Recherche").[C6]    'adresse du nom que l'on recherche
Range("G6:J" & Sheets("Recherche").End(xlUp).Row).ClearContents    'on efface la liste des résultats avant de commencer la recherche
For i = 2 To Sheets.Count    'on boucle sur toutes les feuilles à partir de la 2è
        derlign = Sheets(i).Range("A65536").End(xlUp).Row
        With Sheets(i).Range("C4:C" & derlign)
            Set c = .Find(RechNom, LookIn:=xlValues, LookAt:=xlWhole)    'on effectue la recherche avec la méthode Find
            If Not c Is Nothing Then
                firstAddress = c.Address
                Do
                    With Sheets("Recherche")
                        derLignTemp = .Range("G65536").End(xlUp).Row + 1
                        'on inscrit les résultats de la recherche dans la feuille Recherche
                        .Range("G" & derLignTemp) = c.Offset(, -1)
                        .Range("H" & derLignTemp) = c.Value
                        .Range("I" & derLignTemp) = c.Offset(, 1)
                        .Range("J" & derLignTemp) = c.Offset(, 2)
                    End With
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> firstAddress
            End If
        End With
    Next i
End Sub

J'ai mis des commentaires dans le code pour que ça soit plus compréhensible

Bonjour,

Merci bien vba-new, et désole pour ce retard.

Je vais maintenant l'essayer.

Cordialement,

Kris

-- Lun Juil 19, 2010 9:34 am --

Re,

Alors j'ai une erreur au niveau de la pour effacer la liste avant de commencer!!!

Range("G6:J" & Sheets("Recherche").End(xlUp).Row).ClearContents

Erreur 438: Prorpiété ou méthode non gérée par cet objet!

Une idée?

-- Lun Juil 19, 2010 9:46 am --

J' ai voulu tester le reste du programme alors en mettant la ligne d'erreur en commentaire, j'ai pus me rendre compte qu'avec plusieurs personnes du meme nom (ou il n'y a que le tel qui change), il n'affiché qu'une valeur.

Est-ce parce que j'ai supprimé la ligne d'erreur qui devait faire fonctionné avec plusieurs résultats quasi identique?

Un p'tit oubli de ma part. Essaie avec ce code :

Sub BtnExec_Clic()
Dim RechNom As String, firstAddress As String
Dim i As Byte, derlign As Long, derLignTemp As Long
Dim c As Range
    derlign = Sheets("Recherche").[G65536].End(xlUp).Row
    RechNom = Sheets("Recherche").[C6]    'adresse du nom que l'on recherche
    If derlign > 5 Then Range("G6:J" & derlign).ClearContents    'on efface la liste des résultats avant de commencer la recherche
    For i = 2 To Sheets.Count    'on boucle sur toutes les feuilles à partir de la 2è
        derlign = Sheets(i).Range("A65536").End(xlUp).Row
        With Sheets(i).Range("C4:C" & derlign)
            Set c = .Find(RechNom, LookIn:=xlValues, LookAt:=xlWhole)    'on effectue la recherche avec la méthode Find
            If Not c Is Nothing Then
                firstAddress = c.Address
                Do
                    With Sheets("Recherche")
                        derLignTemp = .Range("G65536").End(xlUp).Row + 1
                        'on inscrit les résultats de la recherche dans la feuille Recherche
                        .Range("G" & derLignTemp) = c.Offset(, -1)
                        .Range("H" & derLignTemp) = c.Value
                        .Range("I" & derLignTemp) = c.Offset(, 1)
                        .Range("J" & derLignTemp) = c.Offset(, 2)
                    End With
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> firstAddress
            End If
        End With
    Next i
End Sub

-- 19 Juil 2010 09:56 --

kris0311 a écrit :

-- Lun Juil 19, 2010 9:46 am --

J' ai voulu tester le reste du programme alors en mettant la ligne d'erreur en commentaire, j'ai pus me rendre compte qu'avec plusieurs personnes du meme nom (ou il n'y a que le tel qui change), il n'affiché qu'une valeur.

Est-ce parce que j'ai supprimé la ligne d'erreur qui devait faire fonctionné avec plusieurs résultats quasi identique?

Si tu parles du nom "Claude" c'est parce qu'il y a un espace superflu à droite du nom sur la feuille PM.

Pour la recherche, il est important de respecter la casse et faire attention aux espaces en trop.

re,

J'ai une nouvelle erreur, sur la ligne:

derlign = Sheets("Recherche").[G65536].End(xlUp).Row

Qui me dis "Objet requis.

En testant le code sans cette ligne et en corrigeant le petit espace pour "Claude", je n'est toujours que la personne de la première feuille.

Est-ce qu'on travaille sur le même fichier ?

Vois sur le fichier joint. Chez moi ça marche. (clique sur le bouton Exécuter)

834anntest-v1.zip (15.33 Ko)

Re,

Eh bien en fait je réecrivais ton code sur un autre ordinateur, et j'ai surement dû oublier quelque chose.

Bref avec ton fichier ca marche du tonnerre

Un grand merci à toi de m'avoir aidé.

Cordialement,

Kris

Rechercher des sujets similaires à "bouton executer recherche feuilles"