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 (permalink)
Futur Membre du Club
 
Date d'inscription: mars 2007
Messages: 39
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 :
 
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
Vieux 04/02/2010, 13h06   #2 (permalink)
Membre Expert
 
Avatar de Fvandermeulen
 
Nom : Frédéric Vandermeulen
Date d'inscription: juillet 2007
Localisation: Bruxelles
Âge: 34
Messages: 1 414
Par défaut

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 :
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
Vieux 04/02/2010, 13h16   #3 (permalink)
Rédacteur/Modérateur
 
Avatar de Arkham46
 
Date d'inscription: septembre 2003
Localisation: Orléans
Messages: 3 203
Par défaut

bjr,

Pour le Find, il faut récupérer le Range et vérifier s'il vaut Nothing :
Code :
 
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
 
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/02/2010, 14h33   #4 (permalink)
Futur Membre du Club
 
Date d'inscription: mars 2007
Messages: 39
Par défaut

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
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 19h04.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.