IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA Find ne marche pas dans les formules


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 78
    Points : 58
    Points
    58
    Par défaut VBA Find ne marche pas dans les formules
    Bonjour,

    J'ai un classeur excel avec plusieurs feuilles qui contiennent des formules de calcul. Ce classeur a été écrit en France et utilise donc les mots clés de la version française de VBA ( SI(...) OU(...) ...). J'ai besoin de faire des versions internationales de ce fichier et d'avoir une version spécifique à chaque pays avec pour chacun les mots clés dans la langue du pays. Par exemple :
    SOMME => SUM en anglais
    SUMA en espagnol
    OU => OR en anglais
    O en espagnol

    Je me suis donc écrit une petite macro VBA qui pour chaque onglet va rechercher les mots clés et les remplacer par la traduction de la langue souhaitée. Et pour cela, j'utilise donc la fonction Replace. Or ça ne fonctionne pas : le mot clé est bien trouvé et remplacé quand c'est dans la valeur d'une cellule mais il n'est pas trouvé/remplacé quand c'est dans la formule d'une cellule. Et pourtant j'ai généré ce code Replace à partir de l'enregistreur de macro et quand je fais le rechercher/remplacer manuellement il modifie bien mes formules. Comme je ne réussissait pas avec le Replace, j'ai alors trouvé sur le net un autre code qui utilise un Find et qui fait ensuite le Replace sur chaque occurence trouvée, mais ça ne marche pas non plus : il ne trouve mon mot clé que dans les valeurs, pas dans les formules, et pourtant la fonction a bien le paramètre pour faire la recherche dans les formules.

    - Exemple de formule :
    =SI(F2="AAA";OU(G2=1;H2=1);"bbb")

    - Ma fonction replace (qui ne marche pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Cells.Select
    Selection.Replace what:="SOMME", Replacement:="SUMA", lookat:=xlPart, _
       searchorder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
       ReplaceFormat:=False
    - La fonction Find + Replace que j'ai trouvé sur le net (et dont le Find ne marche pas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Cells.Select
    Set Found_Link = Cells.Find(What:="SOMME", After:=ActiveCell, _
            LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
     
    While UCase(TypeName(Found_Link)) <> UCase("Nothing")
           Found_Link.Activate
           Found_Link.Formula = Replace(Found_Link.Formula, "SOMME", "SUMA")
           Set Found_Link = Cells.FindNext(After:=ActiveCell)
    Wend


    Voilà, je ne comprends donc pas le comportement de la fonction de rechercher/remplacer qui marche très bien quand je la lance manuellement (depuis le menu) mais qui ne marche pas quand je la lance depuis son équivalent vba.

    Si quelqu'un a une idée, je suis preneur ...
    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    Bonjour,

    Postulat, j'ai dans une cellule de ma zone..

    Quelque soit la langue, le VBA parle anglais...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub toto()
     
    Set Found_Link = ActiveSheet.Cells.Find(What:="sum", After:=ActiveCell, _
            LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
      Found_Link.Select
    End Sub
    Cordialement,

    Ps : si côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  3. #3
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    Bonjour,

    au fait : idem pour replace bien sur....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Replace What:="sum", Replacement:="sommmma", LookAt:=xlPart  etc....
    Cordialement,

    Ps : si côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

Discussions similaires

  1. [ZF 1.11] la fonction log() de FirePhp ne marche pas dans les modules
    Par adilsoft dans le forum Zend Framework
    Réponses: 3
    Dernier message: 06/08/2013, 14h33
  2. Fonction Find ne marche pas à tous les coups...
    Par silvere123 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/08/2012, 15h54
  3. $db->query ne marche pas dans tous les cas
    Par bigorre1000 dans le forum Zend_Db
    Réponses: 8
    Dernier message: 22/07/2008, 19h50
  4. VBA / Find ne cherche pas dans la premiere cellule, comment faire ?
    Par manu789 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/03/2008, 06h40
  5. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo