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 :

Aide sur code Find Replace


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Controleur financier
    Inscrit en
    Mai 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Controleur financier

    Informations forums :
    Inscription : Mai 2018
    Messages : 4
    Par défaut Aide sur code Find Replace
    Bonjour A tous,

    Je commence a programmer un peu en VBA et je rencontre des difficultes a effectuer un code Recherche/Remplacement avec une variable que j ai creee. J ai au prealable enregistre une macro (qui fonctionne), mais je n arrive pas a voir ce qui cloche dans mon code. Voici donc le code que j ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim LetterMonthLY As String
    Dim LetterLastMonthLY As String
    LetterMonthLY = Application.WorksheetFunction.HLookup(CurrentMonth, DataL, 2, False)
    LetterLastMonthLY = Application.WorksheetFunction.Index(DataL, 2,  Application.WorksheetFunction.Match(CurrentMonth,  Sheets("Parameters").Range("B2:M2"), 0) - 1)
     
    Range("A1").Value = LetterLastMonthLY
    Range("A2").Value = LetterMonthLY
     
    Range("D3:E20").Select
    Selection.Replace What:="$" & LetterLastMonthLY, Replacement:="$" & LetterMonthLY, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Et voici le code qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Range("D3:E20").Select
    Selection.Replace What:="$Z", Replacement:="$AA", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Est ce que quelqu un a la moindre idee de la raison pour laquelle cela ne fonctionne pas ?
    Je precise que je remplace des caracteres dans une formule (ou plus exactement des liens vers un autre fichier). Je ne sais pas si cela a un impact mais je prefere le mentionner. Cependant je ne vois pas pourquoi cela marcherait dans un cas et pas dans l autre.

    Merci a tous !

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Essaye de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1").Value = LetterLastMonthLY
    Range("A2").Value = LetterMonthLY
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1").Value = "_" & LetterLastMonthLY & "_"
    Range("A2").Value = "_" & LetterMonthLY & "_"
    Pour vérifier s'il n'y aurait pas des espaces malencontreux qui traineraient dans le contenu de ces variables.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LetterMonthLY = Application.WorksheetFunction.HLookup(CurrentMonth, DataL, 2, False)
    LetterLastMonthLY = Application.WorksheetFunction.Index(DataL, 2,  Application.WorksheetFunction.Match(CurrentMonth,  Sheets("Parameters").Range("B2:M2"), 0) - 1)
    Tu es sûr que ça te retourne les lettres des colonnes ça ?
    Contrôle le contenu de tes variables en pas à pas.
    eric

  4. #4
    Membre à l'essai
    Femme Profil pro
    Controleur financier
    Inscrit en
    Mai 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Controleur financier

    Informations forums :
    Inscription : Mai 2018
    Messages : 4
    Par défaut
    Merci de vos reponses. J ai essaye de voir s il y a des espaces et controle le contenu de mes variables. Le code suivant (mentionne precedemment) me permettait de controler le contenu de mes variables.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1").Value = LetterLastMonthLY
    Range("A2").Value = LetterMonthLY
    J ai bien des lettres (Les lettres "AA" et "Z") qui correspondent bien aux colonnes que je souhaite changer. Ce que je ne comprends pas c est que lorsqueje rentre directement ces lettres cela fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Selection.Replace What:="$Z", Replacement:="$AA", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Alors que lorsque je rentre ma variable le code ne fonctionne plus :s Est ce que par hasard cela porrait etre lie a des parametres de formules actives ? Ou des proprietes des liens hypertextes ? Je debute donc je suis perdue...

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.WorksheetFunction.Index
    te retourne une lettre ? Ah...

  6. #6
    Membre à l'essai
    Femme Profil pro
    Controleur financier
    Inscrit en
    Mai 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Controleur financier

    Informations forums :
    Inscription : Mai 2018
    Messages : 4
    Par défaut
    Oui, cela remvoie une letter puisqu il s agit d une formule IndexMatch qui cherche un mois et renvoie la letter de la colonne a changer (differente pour chaque mois). POur que ce soit un peu plus clair j ai insere le tableau source.
    Images attachées Images attachées  

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

Discussions similaires

  1. aide sur code source
    Par selinoz dans le forum MATLAB
    Réponses: 4
    Dernier message: 13/06/2008, 15h42
  2. Aide sur la fonction replace
    Par pep972 dans le forum Documents
    Réponses: 2
    Dernier message: 16/05/2008, 11h00
  3. [VBA-E]Aide sur Code
    Par patriarche51 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/06/2006, 20h29
  4. [Mail] Besoin d'aide sur code email avec PJ
    Par flysurfer dans le forum Langage
    Réponses: 1
    Dernier message: 23/02/2006, 10h52
  5. besoin d'aide sur code Block
    Par Antalus dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 31/01/2006, 18h38

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