benziz13
-
7 mars 2013 à 18:08
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 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é.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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.
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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.