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 :

Range.Replace versus Rechercher / Remplacer


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2007
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2007
    Messages : 272
    Par défaut Range.Replace versus Rechercher / Remplacer
    Bonjour,
    Dans un contexte de récupération de données par copier/coller à partir d'un portail Web dans Excel, les données sont au format Point décimal.

    L'utilisation de Rechercher / Remplacer ne pose pas de problème, les cellules restent numérique !
    L'utilisation via VBA de Range.Replace fait que les cellules dont le point est remplacé par une virgule, j'ai un message d'attention :
    "Le nombre dans cette cellule est au format texte ou précédé d'une apostrophe".
    Pour corriger il faut revalider chaque cellule (ou utiliser 'convertir en nombre) pour qu'elle repasse en numérique.
    Nom : Capture d’écran 2024-06-08 085909.jpg
Affichages : 202
Taille : 12,9 Ko

    Code obtenu par 'enregistrer une macro' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=True, FormulaVersion:=xlReplaceFormula2
        Range("R7").Select
    Comment compléter le VBA pour qu'il me retourne bien une donnée numérique après le Replace ?
    Par avance merci de votre aide.

    Bertrand

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    975
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 975
    Par défaut
    Salut, teste comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub test()
        Dim cell As Range
     
        ' Remplacer les points par des virgules
        Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
                          SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                          ReplaceFormat:=True, FormulaVersion:=xlReplaceFormula2
     
        ' Parcourir chaque cellule de la sélection et la convertir en nombre
        For Each cell In Selection
            If IsNumeric(cell.Value) Then
                cell.Value = CDbl(cell.Value)
            End If
        Next cell
     
        Range("R7").Select
     
    End Sub

  3. #3
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 370
    Par défaut
    Bonjour,

    Une autre solution consiste à faire ceci avant de "copier" les données au format US (point décimal):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Application.UseSystemSeparators = False
    et une fois la copie effectuée, rechanger au format système (virgule décimale):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Application.UseSystemSeparators = True
    Manuellement: ruban > Fichier > Options > Options avancées > décocher/cocher Utiliser les séparateurs système

    Cordialement.

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/06/2009, 17h49
  2. Rechercher / Remplacer
    Par anti-conformiste dans le forum Langage
    Réponses: 8
    Dernier message: 07/06/2006, 10h30
  3. rechercher / remplacer dans fichier en hexa
    Par ratdegout dans le forum C++
    Réponses: 2
    Dernier message: 26/05/2006, 14h14
  4. Comment faire une recherche/remplacement sous Linux
    Par fabszn dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 07/02/2006, 16h38
  5. Rechercher -> remplacer ?
    Par Joul dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/09/2005, 02h03

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