[Résolu] Récupération de la position d'un texte dans une feuille excel

Récupération de la position d'un texte dans une feuille excel [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 19-07-2012 à 14:42:17    

Bonjour à tous,
 
Après avoir écumé les forums à la recherche d'une solution (et elles sont nombreuses, mais je n'ai pas réussi à les adapter à mon problème) je pose ma question ici:
 
Je dispose d'un fichier Test1.xls qui contient des données variables (nombres et texte)
 
Mon but est de faire une recherche sur toute la feuille (je ne veux pas me limiter au tableau car je peux avoir d'autres données situées en dehors du tableau dans l'avenir) pour trouver un mot (prenons ici le mot position) et une fois que j'ai trouvé ce mot, je cherche à obtenir sa position sous un format Lettre de la colonne suivi du numéro de la ligne (B1 par exemple)
 
J'ai tenté d'utiliser find, match, recherchev sans succès (ou peut être les ai je mal utilisé?).
 
J'utilise excel 2007.
 
Merci d'avance!
 
Cfgluciole1


Message édité par cfgluciole1 le 23-07-2012 à 10:08:59
Reply

Marsh Posté le 19-07-2012 à 14:42:17   

Reply

Marsh Posté le 19-07-2012 à 14:52:48    

Bonjour,
Voici un exemple.
Tu lance la macro, ça te demande le mot à chercher, et te renvois la 1ère adresse trouvée.
 

Code :
  1. Sub trouver_un_mot()
  2. Dim c As Range
  3. Dim flag As Boolean
  4. Dim Mot As String
  5.     Mot = InputBox("Mot à trouver" )
  6.    
  7.     For Each c In ActiveSheet.UsedRange
  8.         If c.Value = Mot Then
  9.             flag = True
  10.             Exit For
  11.         End If
  12.     Next
  13.    
  14.     If flag Then
  15.         MsgBox "Le mot " & Mot & " a été trouvé à la cellule " & c.Address
  16.     Else
  17.         MsgBox "le mot n'a pas été trouvé"
  18.     End If
  19. End Sub


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 19-07-2012 à 15:27:00    

Excellent! Je l'ai un petit peu adapté pour ne pas avoir à rentrer le mot dans une InputBox au départ:  
 

Code :
  1. Sheets(Array("Liste" )).Select
  2. Dim c1 As Range
  3. Dim flag As Boolean
  4. Dim Mot As String
  5. Mot = "Position"
  6. For Each c In ActiveSheet.UsedRange
  7.     If c.Value = Mot Then
  8.         flag = True
  9. Exit For
  10. End If
  11. Next


 
 
Mais lorsque j'essaie d'utiliser la donnée (c.address) j'obtiens une erreur.
Je m'explique:
 
J'essaie d'utiliser l'adresse de la cellule comme argument pour un filtre:
 

Code :
  1. ActiveSheet.Range("c.address:$F$66" ).AutoFilter Field:=1, Criteria1:=Sheets("Liste" ).Range("B2" ).Value


Mais j'obtiens une erreur et je ne sais pas ce que je pourrais faire ... est ce parce que l'argument que je donne à la fonction range n'est pas au bon format?
 
Merci d'avance,
 
Cfgluciole1

Reply

Marsh Posté le 19-07-2012 à 15:33:43    

Les variables ne doivent pas être entre guillemets.
Il faut que tu construise ta chaîne de caractères en concaténant la variante et le reste
 

Code :
  1. ActiveSheet.Range(c.Address & ":$F$66" ).AutoFilter Field:=1, Criteria1:=Sheets("Liste" ).Range("B2" ).Value


 


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 20-07-2012 à 10:34:20    

Bonjour oovaveoo,
 
Tout marche parfaitement, merci de ton aide ;)
 
Cfgluciole1

Reply

Marsh Posté le 20-07-2012 à 14:34:16    

Bonjour,
 
Un petit ajustement:  
 
Je cherche maintenant à avoir 2 variables dans ma fonction range mais la formule suivante me renvoie une erreur:
 

Code :
  1. ActiveSheet.Range(c1.Address & c2.Address).AutoFilter Field:=1, Criteria1:=Sheets("Liste" ).Range("B2" ).Value


 
J'ai pourtant défini c1 et c2:
 

Code :
  1. Dim c1 As Range
  2. Dim c2 As Range


 
Et il me semble que la syntaxe est correcte non? (bien évidemment elle ne doit pas l'être sinon je ne serais pas là :( )
 
Merci beaucoup,
 
Cfgluciole1

Reply

Marsh Posté le 20-07-2012 à 14:55:57    

Bonjour,
il faut les séparer par une virgule

Code :
  1. ActiveSheet.Range(c1.Address , c2.Address)


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 20-07-2012 à 15:53:53    

Bonjour ooveveoo,
 
Décidément, la ponctuation n'est pas mon fort :D
 
Merci et bonne après midi,
 
Cfgluciole1

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed