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 :

Recherche et remplace en boucle format particulier [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Femme Profil pro
    administrateur fonctionnel
    Inscrit en
    Mars 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur fonctionnel

    Informations forums :
    Inscription : Mars 2020
    Messages : 9
    Par défaut Recherche et remplace en boucle format particulier
    Bonjour à tous,

    Je me plonge dans VBA en tant que grosse débutante. J'ai fouillé un peu partout là où j'ai pu trouver de quoi m'aiguiller mais je bloque. Je vous explique mon cas en espérant trouver de l'aide auprès de vous.

    J'ai une colonne D qui contient des entiers, une colonne B qui contient des entiers, une colonne E qui contient un chaîne de caractères alphanumériques mais aussi des espaces.

    Il y a plus de ligne dans la colonne E que dans les colonnes B et D.
    Les colonnes B et D ont le même nombre de ligne.
    Les valeurs des lignes de la colonne B doivent remplacer celles de la colonne D. Ainsi B2=D2, B3=D3 etc.
    Dans E il faut retrouver les valeurs Dx et les remplacer par les valeurs Bx.

    J'ai donc essayer de faire le code ci-dessous mais j'ai une erreur incompatibilité de type. Je me dis que cela est du à mon J qui est "Long" du coup j'ai essayé en "Variant" mais toujours la même erreur. Peut-être est-ce du à la colonne E qui contient des espaces...?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub essai()
    Dim J As Long
     
        For J = 1 To Range("D" & Rows.Count).End(xlUp).Row
        Range("E1:E95195").Replace What:=Range("D" & J), Replacement:=Range("B" & J), LookAt:=xlPart, _
                                   SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
      Next J
    End Sub
    En espérant avoir été claire et ne pas partir de trop loin.

    Bonne soirée.

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Lunavii et bienvenue, bonjour le forum,

    Je n'ai pas bien compris, si Les valeurs des lignes de la colonne B doivent remplacer celles de la colonne D, il suffit de copier la colonne B dans D
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns(2).Copy Range("D1")
    puis, Dans E il faut retrouver les valeurs Dx et les remplacer par les valeurs Bx.Mais si on a remplacé D pas B alor Bx et Dx sont égaux ?!...

  3. #3
    Membre habitué
    Femme Profil pro
    administrateur fonctionnel
    Inscrit en
    Mars 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur fonctionnel

    Informations forums :
    Inscription : Mars 2020
    Messages : 9
    Par défaut
    En fait ce sont les valeurs de B que j'ai dans E. Je dois d'abord trouver B dans E et puis remplacer B par D quand je le trouve dans E. Mes excuses je me suis mal expliquée.

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Une simple formule en colonne F ferait l'affaire puis remplacer la colonne E par les valeurs de la colonne F
    sinon en VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Essai()
        Dim J As Long
        Application.ScreenUpdating = False
        DerLig = Range("D" & Rows.Count).End(xlUp).Row
        For J = 1 To DerLig
            Cells(J, "E").Replace What:=Cells(J, "B"), Replacement:=Cells(J, "D"), LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False
        Next J
    End Sub
    Cdlt

  5. #5
    Membre habitué
    Femme Profil pro
    administrateur fonctionnel
    Inscrit en
    Mars 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur fonctionnel

    Informations forums :
    Inscription : Mars 2020
    Messages : 9
    Par défaut
    En fait j'avais essayé cette formule car je maîtrise plus Excel mais cela ne marche pas. Je m'explique : la formule ne retourne pas d'erreur mais quand je vérifie et que je cherche une des valeurs que je devrais retrouver et bien ça n'a pas marché la formule n'a rien fait.

    Je viens de lancer la macro, il me retourne une erreur 14 incompatibilité de type. Je pense que cela est dû à la colonne E. Les lignes contiennent plus de 200 caractères et on y trouve aussi bien des chiffres, des lettres que des espaces. Est-ce qu'il existe une solution ? En remplaçant Long par Variant j'ai la même erreur...

    J'en profite pour vous remercie pour vos retours super rapides

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Donnez des exemples de ce que contient la colonne E

  7. #7
    Membre habitué
    Femme Profil pro
    administrateur fonctionnel
    Inscrit en
    Mars 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur fonctionnel

    Informations forums :
    Inscription : Mars 2020
    Messages : 9
    Par défaut
    Deux exemples de ligne qu'on peut trouver dans la colonne E :

    "A22000032722000032714008810022257062218502258010140088100257062218502258 110004 1 013006195712606201430092019 00620617006206170005980000059800000000000000000000000000006206171000 "

    "B22000032722000032714008810025706221850225801014008810025706221850225804230 1101201911012019PY5 00100100 00000 00233660002336610000023366000233660000000000000023366PAI"

    Il y en a presque 100 000. En fait au départ je faisais ctrl+H mais après l'avoir fait 2 fois j'aimerais bien trouver un moyen d'automatiser cela

  8. #8
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Tant que vous y étiez, vous auriez pu mettre "quelle est la valeur à remplacer". En fait j'aurai du préciser, mettez les valeurs de B D et E.
    Vu la quantité d'informations dans une cellule et pour pouvoir faire les tests, il serait préférable que vous déposiez un bout de fichier (quelques lignes suffiront)

  9. #9
    Membre habitué
    Femme Profil pro
    administrateur fonctionnel
    Inscrit en
    Mars 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur fonctionnel

    Informations forums :
    Inscription : Mars 2020
    Messages : 9
    Par défaut
    essai.xlsx

    Oui c'est vrai... du coup j'ai mis un fichier avec 10 lignes.

  10. #10
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Je mets en image tableau pour que ceux qui n'ouvrent pas les pièces jointes puissent y jeter un oeil.
    Pièce jointe 543249

    Pour ma part, je n'arrive pas à voir dans aucune ligne de la colonne E la valeur de B, le confirmez-vous?

  11. #11
    Membre habitué
    Femme Profil pro
    administrateur fonctionnel
    Inscrit en
    Mars 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur fonctionnel

    Informations forums :
    Inscription : Mars 2020
    Messages : 9
    Par défaut
    Je n'ai pas mis assez de lignes. La valeur B peut être dans la ligne E50000. Je vais prendre des exemples pertinents excusez moi

  12. #12
    Membre habitué
    Femme Profil pro
    administrateur fonctionnel
    Inscrit en
    Mars 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur fonctionnel

    Informations forums :
    Inscription : Mars 2020
    Messages : 9
    Par défaut
    essai_.xlsx

    Voilà c'est plus pertinent. Une des valeurs B ne sera pas dans la colonne E c'est aussi possible.

  13. #13
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Alors ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Essai()
        Dim J As Long
        Application.ScreenUpdating = False
        DerLig = Range("D" & Rows.Count).End(xlUp).Row
        For J = 2 To DerLig
            Columns("E").Replace What:=Cells(J, "B"), Replacement:=Cells(J, "D"), LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False
        Next J
    End Sub

  14. #14
    Membre habitué
    Femme Profil pro
    administrateur fonctionnel
    Inscrit en
    Mars 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur fonctionnel

    Informations forums :
    Inscription : Mars 2020
    Messages : 9
    Par défaut
    Je viens d'essayer...et cela fonctionne PARFAITEMENT. Je vous remercie grandement pour votre aide ! Vous me sauvez plusieurs heures de travail. Encore merci.
    Très bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Rechercher et remplacer - convertir format
    Par alexandrefcsm dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 08/07/2016, 16h27
  2. [XL-2002] Rechercher/Remplacer avec boucle et plusieurs motifs
    Par Canvas dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/03/2013, 14h09
  3. Réponses: 1
    Dernier message: 20/08/2011, 01h33
  4. Recherche sur un format particulier
    Par Pymm dans le forum Access
    Réponses: 2
    Dernier message: 10/10/2005, 15h25
  5. Réponses: 11
    Dernier message: 01/12/2004, 19h09

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