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 :

Rechercher valeur dans une plage puis modifier la valeur si elle existe [XL-2013]


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
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 41
    Par défaut Rechercher valeur dans une plage puis modifier la valeur si elle existe
    Bonjour à tous,

    J'ai une macro ci-dessous qui me permets de rechercher une valeur dans une plage définie. Je voudrais par la suite modifier la valeur recherchée (en rouge ci dessous) si cette valeur est trouvée.

    Pour le moment la dernière partie du code (en rouge) n'est pas opérationnelle.

    Avez vous une solution ?

    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
    19
    20
    21
    22
    23
    24
    25
    Private Sub CheckBox2119_Click()
    'déclaration des variables :
    Dim Trouve As Range, PlageDeRecherche As Range
    Dim Valeur_Cherchee As String, AdresseNonTrouvee As String, AdresseTrouvee As String
    'affectation de valeurs aux variables :
        'on cherche le mot "Trouve"
    Sheets("ORGANIGRAMME").Activate
    Valeur_Cherchee = "toto"
    Set PlageDeRecherche = Sheets("ORGANIGRAMME").Range("A1:G40")
    'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
    Set Trouve = PlageDeRecherche.Cells.Find(What:=Valeur_Cherchee, LookAt:=xlWhole)
    'traitement de l'erreur possible : Si on ne trouve rien
    If Trouve Is Nothing Then
        'ici, traitement pour le cas où la valeur n'est pas trouvée
        AdresseNonTrouvee = Valeur_Cherchee & " n'est pas présent dans cette feuille"
        MsgBox AdresseNonTrouvee
    Else
    Dim c As Range, d As String
        For Each c In Range("A1:A40").Value
            d = Replace(c, "toto", "toto(1)")
        Next c
    
    End If
    
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je vais te laisszer réfléchir à la portée de ce que tu écris :
    1)
    fait que c est donc un OBJET (un objet range)
    2) comment peux-tu dès lors envisager d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each c In Range("A1:A40").Value
    ???
    C'est un peu comme si tu disais que examines chaque élément écrit d'une liste pour voir si le texte lu est un objet matériel. Ben non ! ce n'est qu'un texte !

  3. #3
    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
    essayer ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Else
    Dim c As Range, d As String
        For Each c In Range("A1:G40")
          c.Value = Replace(c, "toto", "toto(1)")
        Next c
    End If

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    une boucle n'est pas nécessaire, si c'est un bête remplacement sur une plage donnée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' xlwhole pour ne remplacer que les cellules contenant exactement "toto"
    Range("A1:G40").Replace What:="toto", Replacement:="titi", LookAt:=xlPart

  5. #5
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 41
    Par défaut
    Merci pour vos réponses. Ca marche !

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

Discussions similaires

  1. rechercher une valeur dans une plage
    Par aaristocat dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 27/06/2018, 11h15
  2. Réponses: 5
    Dernier message: 04/06/2016, 21h38
  3. Réponses: 3
    Dernier message: 08/01/2016, 19h57
  4. [XL-2007] Recherche d'un nom dans une plage puis renvoi
    Par BuzzZorg dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/01/2014, 05h18
  5. [XL-2007] Recherche d'une valeur dans une plage entre deux intervals
    Par jean bapt' dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/09/2012, 10h13

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