Fonction "rechercher"

benziz13 - 7 mars 2013 à 18:08
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 8 mars 2013 à 21:05
Bonjour à tous,

Voici mon problème,
j'ai un fichier excel pour le suivi de mes factures.
Ce fichier comporte 12 onglets qui correspondent chacun à un mois de l'année et un onglet qui récapitule les lignes de chaque onglet précédent pour lesquelles je suis en attente de règlement.

Je voudrais à partir de ce dernier onglet pouvoir par un double clic sur la cellule contenant le numéro de facture retrouver dans les onglets précédents ce numéro de facture.

Sachant qu'il peut y avoir plus d'une fois le même numéro de facture, je peux me retrouver avec plusieurs résultats.

Pour pallier à cela, il faudrait que la recherche se fasse dans la colonne (n-1) de chaque onglet mensuel sachant que la colonne (n) est celle de la cellule sur laquelle j'ai double cliqué.

Merci pour votre aide

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 mars 2013 à 19:01
Bonjour,
Utilise pour cela la méthode Find (exposée et assortie d'un exemple dans ton aide VBA), appliquée en boucle à chacune des 12 feuilles concernée.
D'autres manières existent, mais toutes en bouclant bien entendu sur les 12 feuilles de calcul concernées.
Reviens avec ton code d'essai d'application de cette méthode, si encore en difficulté.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Merci ucfoutu pour ton aide,

cependant je n'y arrive pas, j'ai vraiment du mal avec le vba.
Un coup de pouce supplémentaire m'aiderait.

Voici mon code:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim i As Integer
Dim EndLine As Integer
Dim SchVal As String


SchVal = Sheets("Attente_règlement").ActiveCell.value
For i = 1 To 12
    With Sheets(i)
    EndLine = .Cells(65000, 1).End(xlDown).Row
        If .Find(SchVal, 7, Target.Column - 1, EndLine, Target.Column - 1) = 1 Then
           '??????????????? 'afficher la cellule trouvée
        End If
    End With
Next i

End Sub


End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 mars 2013 à 21:45
1) boucler sur les feuilles par des index n'est pas forcément adroit
Boucle plutôt ainsi
dim feuille as woksheet
For each feuille in worksheets
 if not feuille is worksheets("nom_de_la_feuille_a_ne_pas_traiter") then
   ' et là tu cherches sur la feuille feuille de manière récursive
 end if
next

2) l'exemple donné à la rubrique Find est pourtant clair. Il traite de surcroît de manière récursive. Tu ne t'es même pas inspiré de cet exemple ! recommence.
3) la dernière ligne remplie d'une colonne (exemple colonne B de la feuille feuille ) est :
feuille.range("B" & rows.count).end(xlup).row
Met un peu du tien, maintenant. Montre que tu as envie de développer et non de simplement attendre qu'on écrive à ta place ce code. En ce qui me concerne : j'y tiens et attends de toi cet effort-là
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
8 mars 2013 à 21:05
N'oublie pas que si tu double-cliques une cellule, la cellule se met en mode édition et rien ne peut s'y écrire en principe...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Rejoignez-nous