Extraction de données d'une BDD suite à la recherche de valeurs précise
Bonjour,
J'aimerai trier de manière automatisé certaines informations d'un tableau afin de les manipuler par la suite.
Je m'explique :
Je récupère dans mon classeur un tableau (BDD) d'un autre classeur. Il est composé de plusieurs colonnes.
Dans ma Maccro je recherche des "liaisons" (colonne F) et le nombre de fois qu'elles apparaissent, à chaque fois qu'elle est dans le tableau, sur une autre feuille la liaison recherchée s'incrémente de 1.
J'aimerai lorsque la liaison est dans le tableau prélever son nombre de jour "Nbr_jour" (présent dans la colonne D de mon tableau), puis additionner ces jours sur mon autre feuille.
Voici le code que j'ai pour le moment (j'ai préférer enlever toutes mes tentatives pour qu'ils soit plus propre) :
Sub Maintenance()
Range("B2:B74").ClearContents
For Each c In Worksheets("Feuille1").Range("F:F") 'j'ai essayé avec End(xlDown) pour que ce soit moins lourd mais ça ne marche pas
If c.Value = "Nom_Liaison" Then
Worksheets("Feuille2").Range("B2").Value = Range("B2").Value + 1
'si la liaison est présente dans le tableau, prendre son nombre de jour (autre colonne, même ligne)
'Worksheets("Feuille2").Range("C2").Value = Range("C2").Value + Nbr_Jour.Value
End If
Next c
End SubJ'ai 70 "liaisons" différentes à vérifier et la longueur du tableau n'est pas connue (elle augmente au cour de l'année) J'espère avoir été assez clair,
Merci d'avance !
bonjour,
une proposition non testée (pas de fichier !)
Sub Maintenance()
With Worksheets("Feuille2")
.Range("B2:B74").ClearContents 'utilité ???
dl = Sheets("feuille1").Cells(Rows.Count, "F").End(xlUp).Row
For Each c In Worksheets("Feuille1").Range("F1").Resize(dl, 1)
If c.Value = "Nom_Liaison" Then
.Range("B2").Value = .Range("B2").Value + 1 'compte en B2 les liaisons trouvées
.Range("C2").Value = .Range("C2").Value + c.Offset(, -2).Value 'somme en C2 des valeurs trouvées en colonne D de feuille1
'si la liaison est présente dans le tableau, prendre son nombre de jour (autre colonne, même ligne)
'Worksheets("Feuille2").Range("C2").Value = Range("C2").Value + Nbr_Jour.Value
End If
Next c
End With
End SubBonjour à toi ,
Je te remercie ta proposition fonctionne à la perfection !
L'utilité de cette ligne est de ne pas comptabiliser une deuxième fois la recherche donc doubler les resultats lorsque je lance plusieurs fois la Maccro ;)
.Range("B2:B74").ClearContents