Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 04/07/2009, 18h32   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2004
Messages : 42
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 42
Points : 13
Points : 13
Par défaut .find avec plusieurs critères

bonjour

j'utilise ce bout de code pour rechercher la chaine de caractères "GO EXCELLIUM" dans une feuille

Code :
1
2
3
4
5
6
7
...
Do
    Set c = .Find(what:="GO EXCELLIUM", After:=ActiveCell, LookIn:=xlFormulas _
        , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False)
    If Not c Is Nothing Then
...
comment faire pour rechercher d'autres chaines de caracteres avec le meme code, (enfin dans la meme ligne) ??
yalefe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2009, 00h13   #2
Membre chevronné
 
Inscription : juin 2008
Messages : 682
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2008
Messages : 682
Points : 661
Points : 661
Salut,

Tu peux faire 2 .Find imbriqués ou passer par des boucles For.

En gros :

Code :
1
2
3
4
5
For i = 1 to 10
    If Range("A"&i) = "TRUC" AND Range("B"&i) = "MUCHE" Then
        'Ce que tu veux faire
    End if
Next
Bonne nuit !
__________________
DeaD
DeaD78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2009, 08h03   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2004
Messages : 42
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 42
Points : 13
Points : 13
merci de ta réponse

le For , j'ai pas trop envie de l'utiliser. Quand on compare le temps de traitement entre un For et un .find, y a pas photo...

je pensais qu'il y avait moyen de passer plusieurs parametres de recherche via un seul .find
Citation:
( du style ...
Code :
1
2
Do
    Set c = .Find(what:="GO EXCELLIUM" or "GO PREMIER",
cà m'aurait bien plu )
le probleme est que je dois extraire d'un fichier "cartes collaborateur" tous les prises carburant effectuées avec les cartes. Sachant qu'il y a dans mon fichier, 5 types de carburant ("GO EXCELLIUM" ; "GO PREMIER" ; "SP95 E10" ; "SUPER SP 98" ; "SUPER SP 95")

il va donc falloir que je fasse 5 recherches imbriquées avec chaque carburant
yalefe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2009, 08h43   #4
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
Pas 5 recherche imbrique mais 5 recherche a la suite si c'est un or
D'abord tous les "GO EXCELLIUM" puis les "GO PREMIER" puis les "SP95 E10" puis ....
tu peux le faire avec un seul find et une boucle sur un tableau

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim i As Integer
Dim tableau(1 To 5) As String
tableau(1) = "GO EXCELLIUM"
tableau(2) = "GO PREMIER"
tableau(3) = "SP95 E10"
tableau(4) = "SUPER SP 98"
tableau(5) = "SUPER SP 95"
 
For i = 1 To 5
    Do
        Set c = .Find(tableau(i))
        If Not c Is Nothing Then
   ......
Next i
End Sub
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 12h33.


 
 
 
 
Partenaires

Hébergement Web