Rechercher et remplacer

Bonjour,

Quelque chose m'échappe, je veux chercher et remplacer dans mes formules (recherchev) la fin qui est ;2;0) par ;1;0)

J'ai utilisé l'enregistreur de macro qui m'a donné ceci:

       
Range("PLANNINGAFFICHE").Select
Selection.Replace What:=";2;0)", Replacement:=";1;0)", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

Mais lorsque je l'exécute, rien ne se passe. Même pas un message d'erreur...

Je déprime de bloquer sur un truc aussi bête

Quelqu'un saurait-il de quoi il en retourne ?

Je vous remercie pour votre aide

Bonjour,

    With Range("PLANNINGAFFICHE")
    .Find(What:=";2;0)", After:=Range("plg").Item(1), LookIn:=xlFormulas, LookAt:=xlPart, _
    SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate

    .Replace What:=";2;0)", Replacement:=";1;0)"
    End With

Bonjour sabV,

Merci pour ta réponse,

J'ai fait un test de chez moi sur un doc en utilisant tel quel ta ligne de code (j'ai bien nommé ma plage, mis une formule recherchev sur une plage etc...)

Lorsque je teste ton code il me donne

Erreur d'exécution 1004

La méthode 'Range' de l'objet '_global' a échoué

Le débogage m'emmène sur : Range("plg").Item(1)

Sais tu de quoi il s'agit ? A quoi correspond "plg" ?

Merci de ton aide

désolé, j'avais fait le test avec ma plage nommée "plg",

    With Range("PLANNINGAFFICHE")
    .Find(What:=";2;0)", After:=.Item(1), LookIn:=xlFormulas, LookAt:=xlPart, _
    SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate

    .Replace What:=";2;0)", Replacement:=";1;0)"
    End With

Bonjour sabV,

J'ai essayé ton code, j'ai une erreur qui revient cette fois ci :

"Variable objet ou variable bloc With non définie"

Erreur qui survient sur cette partie:

.Find(What:=";2;0)", After:=.Item(1), LookIn:=xlFormulas, LookAt:=xlPart, _
 SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate

J'ai essayé de trouver de mon côté mais il me manque des connaissances VBA pour vraiment saisir toute l'essence du problème

Tu sais ce qui coince ?

Merci pour ton aide

voulez-vous essayer avec,

    With Range("PLANNINGAFFICHE")
    .Find(What:=";2;0)", After:=Range("PLANNINGAFFICHE").Item(1), LookIn:=xlFormulas, LookAt:=xlPart, _
    SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate

    .Replace What:=";2;0)", Replacement:=";1;0)"
    End With

Ca ne marche pas plus, j'avais déjà essayé hier soir en changeant plg par ma plage de donnée ...

Le code erreur est le même "Variable objet ou variable bloc With non définie"

pourriez-vous me montrer la macro complète ?

sabV,

Je vous envoie une version un peu allégée mais qui contient tout ce qui me faut.

Donc j'ai un onglet "FnB" où les équipes rentrent leurs planning via des codes

Pour le confort visuel j'ai les horaires qui s'affichent clairement (pas en code) dans l'onglet "PLANNING AFFICHE"

Le bouton "Repos" doit redonner l'information originale recherchev(ref;source;1;0) et définir la largeur des colonnes à 5 (pour afficher uniquement les repos)

Le bouton "Normal" affiche les horaires (ref;source;2;0) et définit la largeur des colonnes à 12

Voilà

J'ai mis les macros et associé les boutons

Merci beaucoup

11planning-macro.xlsm (233.62 Ko)

j'ai réussit à le faire fonctionner de cette manière,

Sub repos()
Range("PLANNINGAFFICHE").Select
    Selection.Replace What:=";1;0)", Replacement:=";2;0)", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

Sub normal()
Range("PLANNINGAFFICHE").Select
    Selection.Replace What:=";2;0)", Replacement:=";1;0)", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

Bonjour sabV,

Excuse moi j'ai essayé mais ça ne fonctionne pas (en fait)

Peux tu me renvoyer le fichier avec la macro stp ?

désolé je ne comprend plus, hier cela fonctionnait, et là ça ne fonctionne plus.

J'ai eu le même cas que toi ! Je suis persuadé que la première fois que j'ai exécuté le code ça a fonctionné et qu'ensuite ça n'a plus marché alors que je n'avais pas du tout changé le code!

Est-ce que ça pourrait être lié à une référence à activer par hasard ? (Dans outils > Référence) ?

Je suis confus ...

Est-ce que ça pourrait être lié à une référence à activer par hasard ? (Dans outils > Référence) ?

non je ne crois pas,

j'ai pensé que c'était du au validation de données, mais après les avoir enlevées ça ne fonctionné pas mieux,

j'ai essayé de rompre les liaisons externe, et je n'ai pas réussi, même après avoir supprimer les noms innutile pour ce cas

Les liaisons externes que tu ne peux pas retirer sont celles des mises en forme conditionnelles ... c'est assez chiant d'ailleurs

c'est d'autant plus bizarre car celle-ci fonctionne,

Sub test1()
    Application.Goto Reference:="PLANNINGAFFICHE"
    Selection.Replace What:="=", Replacement:="=+", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

Sub test2()
    Application.Goto Reference:="PLANNINGAFFICHE"
    Selection.Replace What:="=+", Replacement:="=", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

Du coup ça doit être lié à la conversion de langage entre Excel et VBA

Le séparateur de critère en VBA doit être différent de celui d'Excel (exemple décimal en VBA = "." alors qu'excel peut être soit "." soit ","

Du coup j'ai trouvé !!!

Le séparateur en VBA est "," alors qu'en Excel c'est ";"

J'ai donc remplacé les ";" par des "," et ça marche

Mon dieu quelle aventure

Merci beaucoup pour ton aide

hourra! c'est à retenir

Rechercher des sujets similaires à "rechercher remplacer"