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 un ensemble de valeurs [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
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 28
    Par défaut Remplacer un ensemble de valeurs
    Bonjour à tous!

    Ma question est très simple: puis-je utiliser la fonction replace pour remplacer un ensemble de valeurs par une valeur unique?
    exemple:
    Remplacer toutes les valeurs >1 par 1.

    essais de code non fructueux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range(Cells(5, 49), Cells(21374, 49)).Replace What:=">1", Replacement:="1"
    Range(Cells(5, 49), Cells(21374, 49)).Replace What:>"1", Replacement:="1"
    Range(Cells(5, 49), Cells(21374, 49)).Replace What:>1, Replacement:="1"
    seul le changement d'une valeur unique vers une valeur unique semble fonctionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(5, 49), Cells(21374, 49)).Replace What:="2", Replacement:="1"
    Y a-t-il une autre formule (mis à part un If dans une boucle qui parcours toutes les cellules) qui fasse ce que je désire?

    Merci d'avance de votre aide!

    Kedash

  2. #2
    Membre expérimenté Avatar de vanhoa
    Homme Profil pro
    Analyste Financier
    Inscrit en
    Octobre 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Analyste Financier
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 117
    Par défaut
    Bonjour,

    Tu peux utiliser la methode Select Case

    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 c As Range
     
    For Each c In Range(Cells(5, 49), Cells(21374, 49)).Cells
        Select Case c
            Case Is > 1
                c = "ce que tu veux"
            Case Is = 1
                c = "ce que tu veux"
            Case Is < 1
                c = "ce que tu veux"
            Case Else
        End Select
    Next c
     
     
    End Sub

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour,

    en utilisant le générateur de document et en répondant correctement à la boîte de dialogue,
    on s'aperçoit de l'intérêt à porter sur d'autres paramètres, en particulier LookAt,
    cf l'aide de cette méthode Range.Replace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 03/04/2014 par Marc-L
    '
        Range("A1:E20").Select
        Selection.Replace What:=">1", Replacement:="1", LookAt:=xlWhole, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    End Sub

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil2").Range("AW5:AW21374") = Evaluate("IF(AW5:AW21374>1,1,AW5:AW21374)")
    Seul bémol, les cellules vides seront remplacées par 0

    Sinon, on pourra l'éviter par ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil2").Range("AW5:AW21374") = Evaluate("IF(AW5:AW21374<>"""",IF(AW5:AW21374>1,1,AW5:AW21374),"""")")

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 28
    Par défaut Parfait!
    Tout simplement génial ton code mercatog, merci!

    Merci Vanhoa ca fonctionnerait également!

    Merci également à toi marc, par contre ton code remplace le texte ">1" par 1, ce que je souhaitais était de remplacer la valeur des cellules qui était supérieures à 1 par 1.

    Merci encore à tous!

    Kedash --> sujet résolu

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 28
    Par défaut Mettre une variable range dans la formule?
    Citation Envoyé par mercatog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil2").Range("AW5:AW21374") = Evaluate("IF(AW5:AW21374>1,1,AW5:AW21374)")
    Seul bémol, les cellules vides seront remplacées par 0

    Sinon, on pourra l'éviter par ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil2").Range("AW5:AW21374") = Evaluate("IF(AW5:AW21374<>"""",IF(AW5:AW21374>1,1,AW5:AW21374),"""")")
    J'ai tout de même un soucis, j'ai essayé d'insérer mon range comme variable mais du coup je ne sais pas quelle synthaxe adopter:
    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
    Dim zone As Range
    Set zone = Range(Cells(5, 49), Cells(21374, 49))
    zone = Evaluate("IF zone>1, 1, zone")
    End Sub
    Cela me renvoie #VALEUR! dans les cellules testées.

    Merci d'avance!

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zone = Evaluate("IF(" & Zone.Address & ">1,1," & Zone.Address & ")")

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/09/2006, 21h08
  2. Réponses: 1
    Dernier message: 08/09/2006, 16h43
  3. Récupérer l'ensemble des valeurs de colonnes
    Par maniolo dans le forum JDBC
    Réponses: 23
    Dernier message: 04/09/2006, 16h45
  4. [Debutant]Remplacer une liste de valeur par une liste de val
    Par Sebbo dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 31/03/2006, 12h15
  5. Tirage aléatoire d'un ensemble de valeurs
    Par sylsau dans le forum Prolog
    Réponses: 21
    Dernier message: 13/12/2005, 09h37

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