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

Excel Discussion :

Renvoi de valeur selon chaîne de caractères


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2019
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Renvoi de valeur selon chaîne de caractères
    Bonjour,


    J'ai trouvé sur developpez.net une fonction qui fait "presque" ce que je cherche mais cela ne fonctionne pas. Je débute en VBA et je ne connais pas l'erreur de cette macro

    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
    Dim libelle As Range
    Dim cel As Range
    Dim Lgn As Long
     
     With ActiveSheet
     
            Set libelle = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
     
        End With
     
        For Each cel In libelle
     
            If cel.Value = "=*REMCB*" Then cel.Offset(, 2).Value = "5113000"
     
        Next cel
    Si je change la valeur cel.Value par "" par exemple, cela fonctionne très bien, je pense donc que cel.Value ne peut pas être du texte mais dans ce cas, que dois-je indiquer ?

    Merci d'avance de votre aide.

    adg91

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Que veux tu exprimer très précisément par
    If cel.Value = "=*REMCB*" Then cel.Offset(, 2).Value = "5113000"
    qu'est très exactement le caractère * dans ce code ?
    Une correction ne pourra être valablement suggérée sans ces précisions importantes.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2019
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Je souhaite que dès lors que la cellule contient "REMCB", il y a une écriture deux colonnes à droite d'une valeur.
    J'ai repris cette manière d'écrire "contient" dans les filtres, ce n'est peut-être pas cela qu'il faut indiquer.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    dès lors que la cellule contient "REMCB"
    Que la valeur de la cellule "contienne" cette chaîne ou soit cette chaîne ?
    Ce n'est pas la même chose du tout.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2019
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Contienne, pour le soit, cela fonctionne car si la chaîne est égale à la valeur recherchée, cela exécute la macro et fait le travail.

    La difficulté est bien là, je souhaite rechercher une valeur qui est une chaîne de texte à l'intérieur d'une cellule et si cette valeur est bien dans cette chaîne de texte, indiquer un contenu de cellule ailleurs, exemple :

    A1 contient "12345885REMCB5554400, j'ai ma valeur cherchée "REMCB", donc la macro doit écrire "VRAI" en C1

    Si A1 avait contenu uniquement REMCB, la macro fonctionne avec = "REMCB"

    J'ai tenté cel.Formula mais sans succès.

    Merci de votre intérêt

  6. #6
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,
    Citation Envoyé par adg91 Voir le message
    je souhaite rechercher une valeur qui est une chaîne de texte à l'intérieur d'une cellule et si cette valeur est bien dans cette chaîne de texte, indiquer un contenu de cellule ailleurs, exemple : A1
    contient "12345885REMCB5554400, j'ai ma valeur cherchée "REMCB", donc la macro doit écrire "VRAI" en C1
    En français :
    je souhaite vérifier qu'un texte se trouve dans une autre texte situé à l'intérieur d'une des cellules d'une colonne et si c'est le cas, écrire quelque chose dans une autre cellule de la même ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
    Sub Test()
    Dim libelle As Range
    Dim cel As Range
      With ActiveSheet
        Set libelle = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
      End With
      For Each cel In libelle
        If cel.Value Like "*REMCB*" Then cel.Offset(, 2).Value = "5113000"
      Next cel
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour Patrice
    ou même (moins "cher") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If instr(cel.Value,"REMCB") > 0 Then .....
    Amitiés
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

Discussions similaires

  1. [Python 3.X] extraire valeurs dans chaîne de caractère formatée
    Par langeard dans le forum Général Python
    Réponses: 2
    Dernier message: 25/04/2017, 09h43
  2. affecter une valeur à une chaîne de caractère
    Par abdouccu dans le forum MATLAB
    Réponses: 5
    Dernier message: 12/08/2012, 12h41
  3. Réponses: 4
    Dernier message: 24/07/2006, 17h34
  4. Réponses: 5
    Dernier message: 08/03/2006, 22h20
  5. Réponses: 2
    Dernier message: 18/10/2003, 14h42

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