Fonction find avec plusieurs criteres [VBA] - VB/VBA/VBS - Programmation
Marsh Posté le 06-11-2012 à 15:14:44
Bonjour,
Tu peux tester la valeur de la colonne date en utilisant "offset".
Code :
|
Je te laisse regarder l'aide pour offset pour voir comment ça fonctionne
Marsh Posté le 06-11-2012 à 16:27:33
vave a écrit : Bonjour, |
salut oovaveoo, et merci de ta réponse.
le R.offset(0,2) fait un décalage de 2 colonnes vers la gauche et de 0 ligne si la date (Madate) est bonne alors ca incrémente le compteur.
mais en pratique ça marche pas (ou alors j'air rien compris... )
voila ce que j'ai fait à partir de ton code:
Code :
|
avec le F8 on voit bien que If R.Offset(0, -2) = madate Then n'est jamais vérifié.
Marsh Posté le 06-11-2012 à 16:33:39
C'est quoi qui ne fonctionne pas ?
Ca te donne tot = 0 au final ?
Si oui, il y a sans doute une différence de format entre "madate" et les dates du fichier excel.
Mets un point d'arrêt sur la ligne 40 et vérifies les valeurs de "R.Offset(0, -2)" et de "madate".
Marsh Posté le 06-11-2012 à 16:47:59
vave a écrit : C'est quoi qui ne fonctionne pas ? |
exact tot=0... dans une macro précédente, je voulais faire un filtre auto sur la date: impossible avec ce code:
Code :
|
je vais voir si mes valeurs sont bonne avec le point d'arret
Marsh Posté le 06-11-2012 à 16:53:38
c'est bon j'ai trouvé une parade:
Code :
|
avec juste le mois cela fonctionne!
il me reste à trouver une solution pour faire tourner cette boucle en fonction de plusieurs "thename"!
Marsh Posté le 06-11-2012 à 17:50:19
Ma prochaine étape est de refaire avec différents Thename (sachant qu'ils sont tous fixes), il faut passer par un tableau je suppose: du type
Code :
|
Un truc du genre pourrait marcher?? je ne l'ai pas fait marcher.. juste une idée!!
Code :
|
mais comment faire pour séparer les tot par un différent nom à chaque fois??
Marsh Posté le 12-11-2012 à 22:16:59
Bon j'ai un peu avancé, masi j'ai besoin d'un coup de main....
j'ai un code comme ça maintenant,
Code :
|
mais il ne marche pas des masses.... il ne m'affiche que ce qu'il n'y a pas, et ne fait pas de total pour chaque tab_equipement! ya du taf encore!!
Marsh Posté le 13-11-2012 à 07:12:11
Pourquoi tu ne mets pas tout simplement tes totaux dans un 2ème tableau ?
Code :
|
Une fois la macro finie, tu n'as plus qu'à parcourir tes deux tableaux pour avoir les résultats :
Code :
|
Marsh Posté le 13-11-2012 à 18:24:52
salut oovaveoo,
merci pour ce bout de code!!
j’avais pas du tout pensé à faire un 2eme tableau...
donc merci!!
voila mon code
Code :
|
par contre je ne comprends pas pourquoi ce bout de code ne marche pas...
Code :
|
j'ai un beau erreur 1004: la méthode Autofilter de la classe range à échoué.... ce que je veux c'est le nombre de ligne qui comporte le mois (Month(madate))
Marsh Posté le 14-11-2012 à 07:55:35
Enlève le array, il ne sert à rien :
Code :
|
Marsh Posté le 06-11-2012 à 13:23:20
Bonjour tout le monde!
J'ai réalisé un code qui me permet en fonction du mot renseigné ds une inputbox de trouver et de compter (1fois seulement) combien de fois ce mot apparaît dans la colonne D ( le principe de find en fait!! )
[cpp=]Option Explicit
Sub RechercherNom()
Dim TheName As String
Dim F As Worksheet
Dim R As Range
Dim FirstFound As String
Dim SNC As String
Dim C As Range
Dim Plg As Range
Dim Plg2 As Range
Dim Plg3 As Range
Dim EcartNeg As Integer
Dim LastLine As Long
Set F = Worksheets("Feuil2" )
'ou se trouve la derniere ligne?
LastLine = WorksheetFunction.Max(F.Cells(F.Rows.Count, "F" ).End(xlUp).Row)
'initialisation du compteur
SNC = 0
'on rentre le mot à trouver dans la colonne
TheName = InputBox("Entrez le Nom de l'équipement :", "Nom" )
' on définit la plage de recherche soit la colonne D
Set Plg = F.Range(F.Cells(5, 4), F.Cells(LastLine, 4))
With Plg
Set R = .Find(TheName, LookIn:=xlValues, LookAt:=xlPart)
If Not (R Is Nothing) Then
FirstFound = R.Address
Do
Set R = .FindNext(R)
SNC = SNC + 1 'on incrémente le compteur
Loop While R.Address <> FirstFound
Else
MsgBox ("Ce nom n'est pas répertorié" ) 'message si le mot n'est pas trouvé
End If
End With
' on affiche les valeurs
MsgBox SNC & " " & LastLine
End Sub[/cpp]
ce que je n'arrive pas à faire, ou plutot, comment le faire:
le tableau dont je dispose est une extraction d'un logiciel qui me sort toutes les interventions sur différent équipements en fonction de la date. le but final de cette macro est de compter en fonction de la date le nombre d'intervention par équipement(pour tel équipement tant d'intervention).
en gros:
pour tous les équipements dans la liste(les équipements sont connus), trouver le nombre de fois l'équipement et incrémenter le compteur qui correspond à l'équipement... suis-je clair?
merci d'avance!!