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 :

Remplacer contenu d'une cellule [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Employé voulant apprendre à automatiser
    Inscrit en
    Février 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Employé voulant apprendre à automatiser

    Informations forums :
    Inscription : Février 2018
    Messages : 61
    Par défaut Remplacer contenu d'une cellule
    Bonjourà tous,

    Je cherche à réconcilier automatiquement des données issu de deux sources différentes pour s'assurer que tout va bien.

    Je copie colle donc dans une feuille excel les données d'une source, j'ai déjà pu glisser dans ma macro, l'ajout d'une colonne avec formule dedans, retrait de ligne = 0, données triées dans un certain ordre en fonction de plusieurs critères.

    J'aimerai maintenant pouvoir remplacer le contenu d'une cellule par une autre valeur.

    Je m'explique dans une colonne j'ai des cellules contenant "EUR F/I" et "USD F/I" j'aimerai pouvoir changer le contenu de ces cellules par "EUR" et "USD" lorsque c'est necessaire.

    J'ai essayé plusieurs codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    With Sheets("Apex")
           Sheets("Apex").cell.Value = Replace(Sheets("Apex").cell, "EUR F/I", "EUR", 1)
         Sheets("Apex").cell.Value = Replace(Sheets("Apex").cell, "USD F/I", "USD", 1)
     End With
    Ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     For Each cell In Range("Apex!N1").CurrentRegion.Columns
           Sheets("Apex").cell.Value = Replace(Sheets("Apex").cell, "EUR F/I", "EUR", 1)
       'Next cell
    Mais ça ne fonctionne pas, est-ce un petit soucis dans mon code ou je ne suis pas du tout dans la bonne direction ?

    Merci d'avance

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonsoir
    essaye avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub rechetreplace()
    Range("A1:G40").Replace What:="toto", Replacement:="titi", LookAt:=xlPart
    End Sub

  3. #3
    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
    Une structure With n'est pas une boucle.
    https://msdn.microsoft.com/fr-fr/VBA...with-statement

    Dans ton second code, cell contient la référence à une plage correspondant à une colonne entière puisque tu as ajouté Columns.
    Alors que ton Replace ne peut travailler qu'avec les données d'une seule cellule à la fois.

    Etant donné que c'est un objet, elle intègre sa référence complète. Il est donc inutile de mettre son parent ( Sheets("Apex") ).

    Mais en fait tout ça pourrait se faire en deux lignes en utilisant la méthode Replace de Range (qui équivaut à la commande Remplacer dans Excel).
    https://msdn.microsoft.com/fr-fr/lib.../ff194086.aspx
    Eventuellement, un petit coup d'enregistreur automatique de macro te donnera un code presque tout cuit.

  4. #4
    Membre averti
    Homme Profil pro
    Employé voulant apprendre à automatiser
    Inscrit en
    Février 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Employé voulant apprendre à automatiser

    Informations forums :
    Inscription : Février 2018
    Messages : 61
    Par défaut
    Super merci beaucoup à tous les deux,

    Là je viens de faire un code du style :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sheets("Apex").Columns("G").Replace _
     What:="EUR F/I", Replacement:="EUR", _
     SearchOrder:=xlByColumns, MatchCase:=True
     
    Sheets("Apex").Columns("G").Replace _
     What:="USD F/I", Replacement:="USD", _
     SearchOrder:=xlByColumns, MatchCase:=True
    J'aimerai qu'il soit plus propre, je me demande pourquoi ça ne fonctionne pas quand je fais comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sheets("Apex").Columns("G").Replace _
    What:="EUR F/I", Replacement:="EUR", _
    What:="USD F/I", Replacement:="USD", _
    SearchOrder:=xlByColumns, MatchCase:=True

  5. #5
    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 dans Excel de faire deux remplacements différents en une seule commande : impossible.
    C'est la même chose en VBA étant donné que, ici, tu manipules exactement l'objet que la commande Excel.

    Si tu veux faire plus simple, supprime le SearchOrder qui ne sert à rien étant donné que tu n'appliques le Replace qu'à une seule colonne.

  6. #6
    Membre averti
    Homme Profil pro
    Employé voulant apprendre à automatiser
    Inscrit en
    Février 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Employé voulant apprendre à automatiser

    Informations forums :
    Inscription : Février 2018
    Messages : 61
    Par défaut
    Merci du conseil,

    Je pense que je vais le garder, je risque d'en avoir besoin dans le futur si je refais la même chose avec plusieurs colonnes, je retournerai probablement dans mes anciennes macro pour me donner des idées .

    Bonne fin d'après midi

  7. #7
    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
    Le SearchOrder peut être utile pour une recherche ou si l'on ne veut remplacer que la première occurrence.
    Si on veut tout remplacer d'un coup, ça n'a vraiment aucune utilité.

    Si tu veux faire un remplacement dans la zone A1:E10, peut t'importe de savoir si B5 a été remplacé avant D2 puisque, au final, les deux seront remplacés sans que tu ais même le temps de voir lequel est passé en premier.

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

Discussions similaires

  1. Remplacer contenu d'une cellule
    Par gangsterus dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/05/2016, 00h25
  2. Remplacer le contenu d'une cellule par une valeur sous condition
    Par zoocoral dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/11/2015, 07h50
  3. Remplacer le contenu d'une cellule par d'autres
    Par yezispam dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/04/2015, 16h05
  4. [XL-2007] Remplacer contenu d'une cellule en se basant sur une liste pré-établie
    Par Unbreakable72 dans le forum Excel
    Réponses: 2
    Dernier message: 27/11/2013, 16h54
  5. remplacer le contenu d'une cellule par un autre avec une macro
    Par valentin31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/11/2012, 10h02

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