pb de recherche

  • Initiateur de la discussion clemich
  • Date de début
C

clemich

Guest
salut, désolé de dérranger avec des problèmes surement bêtes mais j'ai en problème de code. C'est mon premier jour de VB et je galère un peu (en fait beaucoup...).

J'ai un tableau de strings et je veux faire une boucle : pour chaque nom du tableau le rechercher dans une colonne excel, et pouvoir afficher les noms présents .

For i = 0 To 13 Step 1 '13 noms du tableau

With ActiveSheet.Range('D2:D120') 'colonne où chercher

.Cells.Find(What:=tableau_nom(i), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart
, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= False, searchformat:=False).Activate

End With

voilà, j'ai un message d'erreur et j'arrive à rien. Merci de m'aider si quelqu'un à une idée
 

MichelXld

XLDnaute Barbatruc
bonjour

tu peux tester cette adaptation ( tu avais un 'Cells' de trop dans ta macro )


Code:
Dim C As Object
Dim FirstAddress As String

With ActiveSheet.Range('D2:D120')
    Set C = .Find(What:=tableau_nom(i), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart _
, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, searchformat:=False)
    If Not C Is Nothing Then
        FirstAddress = C.Address
        Do
            MsgBox C.Address 'exemple d'action si une valeur est trouvée
            
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> FirstAddress
End If
End With


bonne soiree
MichelXld

Message édité par: MichelXld, à: 06/06/2005 18:05
 
C

clemich

Guest
merci beaucoup d'avoir répondu, c'est sympa. Je viens juste de tester la portion de code que tu m'a passé, déjà, c'est exactement ce que je veux faire avec un affichage des valeurs des cellules contenue dans mon tableau.

En fait, quand j'exécute la macro, il ya un message d'erreur: erreur d'éxécution 13 :incompatibilité de type, qui vient de la ligne

Set C = .Find(What:=tableau_nom(i), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart _
, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, searchformat:=False)

Ca doit donc être en rapport avec les propriétés de mon tableau. J'y stock des strings, mais faut'il que les valeurs des cellules excel aient un type précis dans ce cas? (la colonne dans laquelle je fait la recherche contient des nombres et des caracteres qui sont stockés sous forme de texte->ce que dit excel, est-ce un problème?)

En outre quand j'affecte des valeurs à mon tableau je suis la syntaxe suivante : Mon_tableau(i)='mon_nom'; est-ce correct?

Comme tu le vois, je me pose plein de question, alors si tu a des idées pour m'aider ce serait vraiment super. Merci, bonne journée!
 
C

clemich

Guest
Je n'arrive toujours pas à éviter cette magnifique 'erreur 13'.
Merci de ton aide c'est très sympa!

je te passe un exemple de fichier, la colonne ou faire la recherche est la colonne D (contient des chiffres et des caractères). Dans cette exemple, la recherche devrait fournir les noms 'Jasmine' et 'Jamine' qui sont rentrés dans mon tableau comme noms erronés.

Mais la macro ne s'exécute toujours pas ce qui vient apparemment d'une 'incompatibilité de type'.

Si tu as une idée et que tu trouves l'erreur, je serais le plus heureux des stagiaires. (soit indulgent pour mon code, ça doit pas être terrible mais je commence juste la prog). Merci beaucoup et bonne journée.
 
C

clemich

Guest
la pièce jointe ne veut pas trop est attachée, c'est très bizarre.
:( [file name=exemple_pb_recherche.zip size=27931]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/exemple_pb_recherche.zip[/file]
 

Pièces jointes

  • exemple_pb_recherche.zip
    27.3 KB · Affichages: 7

MichelXld

XLDnaute Barbatruc
bonjour

tu peux tester cette adaptation : je ne reussis toujours pas à reproduire l'erreur 13

par contre je ne comprends pas bien ta procedure car tu effectuais la recherche dans la plage D2:D120 alors que le nom Jasmine est dans la cellule D683
il serait sans doute possible d'optimiser les reponses au MsgBox , mais je ne sais pas excatement ce que cherches à faire avec la macro



bonne soiree
MichelXld
 

MichelXld

XLDnaute Barbatruc
rebonjour

oouppss... le fichier

bonne soiree
MichelXld [file name=exempleRechercheV02.zip size=28689]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/exempleRechercheV02.zip[/file]

Message édité par: MichelXld, à: 08/06/2005 17:42
 

Pièces jointes

  • exempleRechercheV02.zip
    28 KB · Affichages: 13
C

clemich

Guest
Ton code marche vraiment bien!!! J'ai pu finir ma procédure nickel.
J'ai juste un soucis avec la fonction permettant de mettre en majuscule la prmière lettre de la valeure d'une cellule.
Il s'avèrre que quand j'applique la macro sur ma feuille les cellules qui contienne du texte type:
es145v2 deviennent Es145V2
il ya une nouvelle majuscule après la série de chiffre. Voilà, à part ça c'se ttrès gentil et surtout ca marche. Alors merci

Bonne journée et que l'aura du VB ne te quite pas
 

MichelXld

XLDnaute Barbatruc
bonjour

merci pour ton message

effectivement , le 'Application.Proper' que j'avais pris l'initiative de placer dans la macro n'est pas vraiment adapté .


s'il s'agit d'une simple mise en forme tu peux réutiliser ta procedure d'origine :

Cell.Value = UCase(Left(Cell.Value, 1)) & _
LCase(Right(Cell.Value, Len(Cell.Value) - 1))


si cette partie de la macro te servait pour faciliter la recherche dans la colonne D , elle n'est plus utile car en debut de procedure j'ai inséré 'Option Compare Text' qui permet d'effectuer la recherche sans etre sensible aux majuscules et minuscules


bonne soiree
MichelXld
 
C

clemich

Guest
Ok merci, la dernière petite procédure qui permet de mettre uniquement la première lettre en majuscule me convient parfaitement car dans la colonne ou j'applique la recherche, tous les noms doivent être mis en majuscule, le Compare ne m'est alors pas utile, car dans mon tableau de noms à chercher je les rentre tous avec des majuscules. En tout cas c'est très gentil de t'être penché sur mon problème.

Voilà, ma procédure supprime tous les espaces, met en majuscule fait la recherche et indique les noms truvé, puis remplace ces noms avec les bons correspondant (j'ai fait un tableau à doubles entrées), cv'est exactement ce qu'on me demandé de faire (je suis en stage actuellement) et c'est un peu grâce à toi alors mille merci et bonne continuation!!! :p
 

Discussions similaires

Réponses
1
Affichages
134

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux