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/02/2010, 12h59   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 39
Points : 10
Points : 10
Par défaut question sur FIND et FOR EACH ... LIKE

bonjour à tous,

Je butte sur la fonction recherche: FIND
J'ai une variable : TEMP qui prend plusieurs valeurs.
je dois chercher chacune de ces valeurs dans un fichier Excel et renvoyer la ligne associée.
Jusque là pas de problème.
Ce qui m'embête plus c'est que TEMP peut ne pas être dans le fichier.
Alors lorsque j'utilise la fonction FIND et que je lance ma macro si la valeur ne se trouve pas dans le fichier cela me renvoie une erreur de compilation 91.

Question: comment ignorer cette erreur et gérer le fait que FIND n'aboutis pas ?

J'ai bien essayé de passer par la fonction FOR EACH ... LIKE mais la encore je butte:

Code :
1
2
3
4
5
6
 
For Each c In  [A1:AA200]
   If c.Value = temp '= test ou TEST 
       temp = c.Row
   End If
Next
Ma variable TEMP peut être en minuscule ou pas dans le fichier.
Quelle instruction mettre dans la fonction FOR EACH pour spécifier de ne pas respecter la casse?

Merci par avance à tous pour vos réponses.

M.A.S
Sarune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 13h06   #2
Membre Expert
 
Avatar de Fvandermeulen
 
Frédéric Vandermeulen
Inscription : juillet 2007
Messages : 1 716
Détails du profil
Informations personnelles :
Nom : Frédéric Vandermeulen
Âge : 36
Localisation : Belgique

Informations forums :
Inscription : juillet 2007
Messages : 1 716
Points : 2 108
Points : 2 108
Salut,
Une astuce de contournement:

Passe les caractères récupérés par la cellule en majuscule, idem pour ta variable Temp, donc:


Code :
1
2
3
4
5
For Each c In  [A1:AA200]
   If ucase(c.Value) = ucase(temp) 'Ucase te permet de renvoyer toujours TEST et plus Test ou même test ou encore TeSt, ou encore... 
       temp = c.Row
   End If
Next
A+
__________________
N'oubliez pas le si votre problème est solutionné.
Fvandermeulen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 13h16   #3
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 220
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 220
Points : 7 734
Points : 7 734
bjr,

Pour le Find, il faut récupérer le Range et vérifier s'il vaut Nothing :
Code :
1
2
3
4
5
6
7
8
 
Dim lFind As Range
Set lFind = Sheets("Feuil1").Range("A:A").Find("test")
If lFind Is Nothing Then
    MsgBox "non trouvé"
Else
    MsgBox "non trouvé en adresse: " & lFind.Address
End If
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 14h33   #4
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 39
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 39
Points : 10
Points : 10
merci à tous pour votre rapidité et précision !
Que du bonheur ce forum...
Sarune 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 13h11.


 
 
 
 
Partenaires

Hébergement Web