Remplacements dans une sélection

Résolu
Bonjour la communauté

J'aurais besoin d'un coup de pouce ...

Excel possède bien un outil de remplacement d'une chaîne de caractères par une autre, mais ne permet malheureusement pas de le faire dans une sélection.

Je cherche à remplacer plusieurs chaînes de caractères (mettons Paris;Toulouse;Carcassonne) par "France", mais uniquement dans la sélection (A1:M980).
Ou idéalement, dans une sélection que j'effectuerai à la souris (car cette sélection est variable).

Cela vous paraît-il faisable ?

Je vous en remercie par avance !

8 réponses

  1. OK Mike

    J'ai fini par y arriver en recopiant ces lignes avec tous les codes nécessaires.

    Merci beaucoup

    Bonne soirée
    0
    1. Re,

      il suffit de remplacer
      [A3:D15] par selection

      Private Sub CommandButton1_Click()
      Selection.Replace What:=[F3], Replacement:="France"
      Selection.Replace What:=[F4], Replacement:="France"
      Selection.Replace What:=[F5], Replacement:="France"
      Selection.Replace What:=[F6], Replacement:="France"
      Selection.Replace What:=[F7], Replacement:="France"
      Selection.Replace What:=[F8], Replacement:="France"
      Selection.Replace What:=[F9], Replacement:="France"
      Selection.Replace What:=[F10], Replacement:="France"
      End Sub
      0
      1. Mmmmh oui, ça fonctionnerait.
        Mais dans ce cas tu ne tiens pas compte de 2 conditions :

        - La variabilité de la longueur du tableau (réglée par la sélection à la souris)
        - Le fait que mon tableau comprend parfois 1000 lignes, difficile de recopier le code 1000 fois.

        J'ai une autre solution, peut-être plus facile à mettre en oeuvre :
        Ça fonctionnerait si, dans ma sélection à la souris, on remplaçait :
        Toutes les cellules non-vides sauf celles comprenant "Fontenay; Marseille; Bordeaux" par Paris.

        Une idée ?
        0
        1. Re,

          Tu pourrais partir sur un code simple placé dans un bouton activex

          Private Sub CommandButton1_Click()
          [A3:D15].Replace What:=[F3], Replacement:="France"
          [A3:D15].Replace What:=[F4], Replacement:="France"
          [A3:D15].Replace What:=[F5], Replacement:="France"
          [A3:D15].Replace What:=[F6], Replacement:="France"
          [A3:D15].Replace What:=[F7], Replacement:="France"
          [A3:D15].Replace What:=[F8], Replacement:="France"
          [A3:D15].Replace What:=[F9], Replacement:="France"
          [A3:D15].Replace What:=[F10], Replacement:="France"
          End Sub

          on pourrait travailler avec des boucles ce qui raccourcirait le code mais le ralentirait

          https://www.cjoint.com/?DJroLhCFAY4
          0
          1. Tu avais raison, j'arrive à effectuer ce remplacement à présent, je ne sais pas ce que j'ai fichu tout à l'heure ... :)

            La réalité est un peu différente pour mon fichier de plus de 1000 lignes qui contient une cinquantaine de mots à remplacer tous par France.

            Comme il me paraissait difficile de se passer de macros, j'ai enregistré une macro et corrigé partiellement le code :
            J'obtiens cette macro qui remplace Carcassonne dans ma sélection effectuée à la souris :

            Option Explicit
            Sub Rempl()

            Dim ActSheet As Worksheet
            Dim SelRange As Range

            Set ActSheet = ActiveSheet
            Set SelRange = Selection

            Selection.Replace What:="Carcassonne", Replacement:="France", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False

            ActSheet.Select
            SelRange.Select
            End Sub


            Cela fonctionne très bien ainsi.

            Par contre, penses-tu possible de remplacer le What:="Carcassonne"
            par What:="Tout ce qui se trouve dans la colonne F" ???

            Voici le fichier avec la macro : https://www.cjoint.com/c/DJrmssVeYec

            On avance, merci pour ton aide.

            Je trouve le sujet passionnant.
            0
            1. Re,

              Non cela marche très bien, tu sélectionnes bien ta plage en jaune A4:D15
              tu vas chercher l'outil Remplacer dans Rechercher tu saisis Paris et dans Remplacer France, tu clic sur remplacer tout et tout tes Paris de la zone sélectionnée sont remplacé, et uniquement les valeurs de ton tableau jaune, MAIS IL FAUT QUE LA PLAGE SOIT ACTIVEE (sélectionnée)

              pour la deuxième question, c'est non ou il faut passer par ma proposition avec formule ou plus compliqué avec un code VBA
              0
              1. Salut Mike

                Merci bien de t'y mettre.

                Lorsque je suis ce que tu m'indiques, il me trouves bien des occurences, mais sans tenir compte de ma sélection.
                Du coup, si je fais "Remplacer tout", il me remplace aussi les occurences en dehors de ma sélection.

                Un exemple sur https://www.cjoint.com/?DJrlCWOPuJo

                Autre chose : dans le champ de recherche, peut-on spécifier plusieurs valeurs à remplacer par la même chaîne ?
                Si oui, comment séparer les valeurs ? Espace et ; ne fonctionnent pas.

                Merci d'avance Mike
                0
                1. Bonjour,

                  Mais bien sur que si, tu commence par sélectionner ta plage A1:M980

                  ensuite tu ouvres l'assistant, onglet Accueil/module Édition/Rechercher et Sélectionner/Remplacer, dans rechercher tu saisis le texte à remplacer Paris;Toulouse;Carcassonne et dans remplacer tu saisis France et clic sur remplacer tout

                  Attention il faut que les saisis soient identiques, un seul espace et cela ne fonctionne pas, de même que si tu veux remplacer que Paris dans la chaine il faut dans Rechercher saisir uniquement Paris

                  ou il faut écrire une formule qui prendra en compte Paris ou Toulouse ou Carcassonne
                  et affichera France
                  exemple
                  =SI(OU(NB.SI(A4;"*Paris*")=1;NB.SI(A4;"*Toulouse*")=1;NB.SI(A4;"*Carcassonne*")=1);"France";"")

                  ensuite il suffit de faire un copier/collage spécial/valeur pour transformer les
                  formule par le texte

                  A+
                  Mike-31

                  Une période d'échec est un moment rêvé pour semer les graines du savoir.
                  1