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 :

Code VBA remplacement d'une expression


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 7
    Par défaut Code VBA remplacement d'une expression
    Bonjour,

    Je suis débutant en VBA.

    Je cherche à créer une macro me permettant de remplacer une expression du type : NRG1026X - CI - redevances par ceci: NRG1026 - Charges internes - redevances en un clic.

    Il faudrait que j'arrive à effectuer ce type de remplacement sur une trentaine d'onglets dans la cellule E2 et celle-ci seulement, en sachant que je m'appuie sur deux tableaux insérés dans un des onglets pour trouver les deux types d'expression citées ci-dessus.

    J'espère avoir été clair et vous remercie de votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Le code pour remplacer dans toutes les feuilles est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
        Dim Sh As Worksheet
        For Each Sh In Worksheets
            Sh.[E2].Replace "NRG1026X - CI - redevances", "NRG1026 - Charges internes - redevances", xlWhole
        Next Sh
    End Sub
    On peut exclure certaines feuilles du remplacement. Par contre, je n'ai pas compris ce qui suit :

    en sachant que je m'appuie sur deux tableaux insérés dans un des onglets pour trouver les deux types d'expression citées ci-dessus.
    Je me doute que ça doit compliquer les choses. Peux-tu préciser ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 7
    Par défaut
    Et bien, en fait, vu que j'ai un certain nombre d'expressions, je pensais faire un code plus simple sans rajouter à chaque fois les deux expressions (celle à rajouter et celle à remplacer).

    Ce que je veux dire c'est que dans mon excel, j'ai des listes d'expressions et que j'aimerais, au lieu de taper une trentaine de ligne de remplacement, que la macro aille chercher directement l'expression de remplacement dans la liste en question.

    Après je ne sais pas si cela est possible et, très franchement, je pense que je vais opter pour ta solution qui me paraît plus sûre. Par contre, j'ai une autre question, en fait, il faudrait que que je puisse à nouveau remplacer "NRG1026 - Charges Internes - redevances par son expression initiale (NRG1026X - CI - redevances). J'ai besoin d'être en mesure de proposer et d'utiliser les deux écritures. Dois-je simplement réécrire la ligne de code proposée ou existe-t-il une fonction spécifique permettant de faire cela?

    Merci de ton aide.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Utilise plutôt le code suivant en modifiant les plages "Tableau1" et "Tableau2" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
        Dim Sh As Worksheet, Tableau1 As Range, Tableau2 As Range
        Set Tableau1 = Sheets("Feuil1").[A1:A10]
        Set Tableau2 = Sheets("Feuil1").[B1:B10]
        For Each Sh In Worksheets
            If Sh.Name <> "Feuil1" Then
                For i = 1 To Tableau1.Count
                Sh.[E2].Replace Tableau1(i), Tableau2(i), , xlWhole
                Next i
            End If
        Next Sh
    End Sub

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2012
    Messages : 7
    Par défaut
    Je te remercie pour le code, il fonctionne correctement!

    Tu m'as dit qu'il était possible d'exclure certains onglets? Pourrais-tu me montrer la procédure?

    Cdt

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Dans l'exemple précédent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Sh.Name <> "Feuil1" Then
    permet d'exclure "Feuil1". Tu peux en ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Sh.Name <> "Feuil1" And Sh.Name <> "Feuil2" Then
    Si tu en as beaucoup, dis-le, on peut procéder autrement.

Discussions similaires

  1. [AC-2007] Code VBA création d'une checkbox
    Par Tifriis dans le forum VBA Access
    Réponses: 19
    Dernier message: 28/04/2015, 12h15
  2. [XL-2007] "Histogramme empilé 3D" pb VBA Remplacement d'une zone par une image
    Par belpaume dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/11/2010, 16h22
  3. Réponses: 2
    Dernier message: 14/10/2009, 08h57
  4. Code VBA pour Copier une cellule dans un filtre?
    Par Redisdead dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/02/2009, 05h48
  5. Code VBA qui supprime une requête
    Par Fredo67 dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/05/2008, 17h47

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