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 13/09/2011, 20h36   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2010
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 33
Points : 10
Points : 10
Par défaut RechercheV avec condition

Bonjour, tous le monde.

Bon alors j'ai lu pas mal de truc sur internet forum etc... y'a pas mal de solution mais je comprend pas le code et je n'arrive pas à l'adapter à ma situation.

Bon alors rien de bien compliquer... pour vous ^^

Voici le code

Code :
1
2
3
4
5
6
7
8
9
10
 
Sub Conversion()
Dim Cell As Range
Set a=Worksheets("feuil1")
For each Cell In a.range("F2:F6000")
    If Cell.Values="LeMotQueJeCherche" Then
       Cell.value=FormulaLocal="=recherchev("????";tablecas;2;Faux)
    End If
 
End Sub
Voilà donc une petite explication de la macro :
1. je cherche le mot "LeMotQueJeCherche" dans la colonne F
2. Si le mot est présent dans une cellule je remplace celle-ci par une rechercheV.
3. Le problème c'est la "Valeur cherchée". J'aimerais que celle-ci soit variable. Le mieux c'est un petit exemple: en F2 je trouve "LeMotQueJeCherche" donc la valeur cherchée est (dans la colonne D par exemple) D2. Deuxième "LeMotQueJeCherche" est trouvé en F400 donc la valeur devient D400 et ainsi de suite.
4. Le néophite est content.

Voilà voilà, je sais que c'est un topic un peu réccurant mais j'ai cherché mais en vain.

A bientôt.
blanka347 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 21h02   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Bonjour,

Si je comprend bien quand on trouve un mot, on remplace par une formule RechercheV qui recherche ce mot dans la colonne D et retourne la colonne E.
Le prochain a chercher se trouvant en D et ainsi de suite
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim cel As Range
Dim strSearch As String
 
 
strSearch = "Mardi"
 
For Each cel In Range("F2:F6000")
 
    If cel.Value = strSearch Then
 
        cel.FormulaLocal = "=Recherchev(""" & strSearch & """;D:E;2;0)"
        strSearch = cel.Offset(0, -2).Value
 
    End If
 
Next cel
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 22h43   #3
Candidat au titre de Membre du Club
 
Inscription : janvier 2010
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 33
Points : 10
Points : 10
Alors, j'ai essayé ton code.

C'est pas exactement ça, en fait dans ton code la "valeur cherchée" (de la fonction rechercheV) est la même "que le "mot que je cherche" (dans la colonne F dans mon exemple). J'avoue ça porte à confusion.

Cependant j'ai pu grâce à toi faire quelques modifications pour avoir le code que je recherche.

Le voici : (histoire de partager le fruit de mon travail )

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub test()
 
Dim cel As Range 
Dim strSearch As String
'strSearch est la variable qui correspond à la valeur cherchée de la recherchev 
Dim Valeur As String
'valeur est la variable qui va contenir le mot à chercher (ici LeMotQueJeCherche)
 
Valeur = "LeMotQueJeCherche"
 
For Each cel In Range("F2:F6000")
 
    If cel.Value = Valeur Then
'test qui permet de rechercher le à chercher
        strSearch = cel.Offset(0, -2).Value
'une fois le mot trouvé on sélectionne la cellule qui se trouve 2 colonnes avant  
        cel.FormulaLocal = "=Recherchev(""" & strSearch & """;tablecas;2;0)"
'on remplace le mot cherché par la recherchev
 
    End If
 
Next cel
 
End Sub
Voila j'ai essayé d’être le plus clair possible pour les prochains.

Merci beaucoup en tous les cas.

A bientôt.
blanka347 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 22h56   #4
Candidat au titre de Membre du Club
 
Inscription : janvier 2010
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 33
Points : 10
Points : 10
Au fait une dernière petite question.

Code :
 cel.FormulaLocal = "=Recherchev(""" & strSearch & """;tablecas;2;0)"
Est-il possible de m'expliquer pourquoi après recherchev on met 3 guillemets et le caractère & ?

Merci et bonne soirée
blanka347 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 23h09   #5
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
1 .Dans une formule RechercheV la valeur recherchée, si elle est de type chaine de caractère, doit être entre " ".

2. Dans une chaine de caractère, quand on veut afficher des ", il faut les doubler car sinon le code traduit par une sortie de chaine
Code :
cel.FormulaLocal = "=Recherchev(""MOTRECHERCHE"";tablecas;2;0)"
affichera dans la formule de la cellule
Code :
=Recherchev("MOTRECHERCHE";tablecas;2;0)

Le & sert à concaténer une chaine de caractère avec une variable ou une autre chaine de caractère
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 09h01   #6
Candidat au titre de Membre du Club
 
Inscription : janvier 2010
Messages : 33
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 33
Points : 10
Points : 10
Merci. Bonne journée
blanka347 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h28.


 
 
 
 
Partenaires

Hébergement Web