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 :

Utiliser une chaine de caractères dans une cellule excel comme base d'une conditionnelle VBA [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 15
    Points : 15
    Points
    15
    Par défaut Utiliser une chaine de caractères dans une cellule excel comme base d'une conditionnelle VBA
    Bonjour,

    Je voudrais baser une instruction conditionnelle sur une chaine de caractères à récupérer dans excel (qui est soit payé, soit acompte, soit à payer à la réception).

    Je ne pense pas que ce soit la récupération qui pose problème. Je définis que payement est une chaine de caractères et ensuite = Sheets().Cells().Value.

    Par contre, au niveau du if, c'est toujours le else qui est exécuté. C'est là que doit se trouver le problème. J'ai mis if payement = "payé" ou else if payement = "à payer à la réception" then... instruction.

    Avez-vous une idée de ce qui ne va pas?

    Merci beaucoup!

  2. #2
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut utiliser une chaine
    Bonjour,

    Difficile de se faire une idée. Merci de joindre le code ou l'extrait de code pertinent entre balises (#).

    Cordialement,

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sans visualiser le code complet (au moins toute l'instruction If Then Else), il est difficile de répondre.
    Toutefois une erreur fréquente lors d'une comparaison avec des chaînes de caractères peut se produire soit avec une casse différente entre les éléments comparés soit avec des espaces avant et après la chaîne de caractères dans un de ceux-ci.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Voici le code (et un printscreen des cases excel si ça sert à quelque chose) :

    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
    26
    27
    Sub reste_a_payer()
     
    Dim ligne As Integer
    Dim Payement As String
     
    ligne = 2
     
        While ligne <= 21
     
        Payement = Sheets("Feuilles de route").Cells(ligne, 10).Value
     
            If Payement = "Payé" Then
                Sheets("Feuilles de route").Cells(ligne, 13).Value = "Solde apuré"
     
            ElseIf Payement = "A la réception" Then
                Sheets("Feuilles de route").Cells(ligne, 13).Value = "Doit encore " & Cells(ligne, 10).Value
     
            Else
                Sheets("Feuilles de route").Cells(ligne, 13).Value = "Doit encore " & (Cells(ligne, 10).Value) * 0.8
     
            End If
     
        ligne = ligne + 1
     
        Wend
     
    End Sub
    Images attachées Images attachées  

  5. #5
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut utiliser une chaine
    re....,

    ce n'est peut-être pas optimum comme écriture mais cela semble fonctionner au vu de mes essais

    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
     
    Sub reste_a_payer()
     
    Dim ligne As Integer
    Dim Payement As Range
     
    ligne = 2
     
    While ligne <= 21
          Set Payement = Sheets("Feuil2").Cells(ligne, 10)
            With Payement
                If .Value = "Payé" Then
                    Cells(ligne, 13) = "Solde apuré"
                ElseIf .Value = "A la réception" Then
                    Cells(ligne, 13) = "Doit encore " & Cells(ligne, 10).Value
                Else
                    Cells(ligne, 13) = "Doit encore " & (Cells(ligne, 10).Value) ' * 0.8
                End If
            End With
        ligne = ligne + 1
    Wend
    End Sub
    Cordialement,

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 15
    Points : 15
    Points
    15
    Par défaut Trouvé
    La honte, je viens de trouver le problème!
    J'avais mal compté le numéro de la colonne...

    Bon, on aura revu la manière de faire référence à des strings...

    Merci à tous les deux!

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

Discussions similaires

  1. Comment modifier la police d'une chaine de caractère dans un tableau excel ?
    Par cle.mentito dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/03/2015, 23h11
  2. Réponses: 3
    Dernier message: 11/03/2013, 22h38
  3. Ecrire une chaine de caractère dans un fichier excel
    Par Wassim123 dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/05/2008, 10h42
  4. Utiliser une chaine de caractère dans une clause WHERE
    Par DanaX dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 15/05/2007, 12h02
  5. Réponses: 1
    Dernier message: 06/05/2007, 17h42

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