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 :

Condition dans un IF THEN qui ne réagit pas comme d'habitude. [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
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Par défaut Condition dans un IF THEN qui ne réagit pas comme d'habitude.
    Bonjour,

    J'ai beaucoup programmé en VBA sous Access, mais je débute en Excel.

    J'écris une fonction (Test(...) As Volatile) qui retourne une valeur selon ce qui est trouvé dans un champ d'une autre feuille. Les valeurs contenues dans ce champ sont composées d'un seul caractère (A..Z).

    À l'aide de WorksheetFunction.Vlookup, je réussis à déterminer le numéro de la ligne.
    (Test = NoLigne retourne le bonne information)

    À l'aide de Range.Offset(l,c), je retrouve l'information voulue dans le champ de départ.
    Je place cette valeur dans la variable V1, DIMmentionnée comme Variant (String fait tout échouer).
    (Test = V1 retourne la bonne valeur)

    Mais, la ligne suivante me retourne #VALEUR :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF V1 = "J" Then Test = "Hello"
    J'ai même tenté la chose suivante avec V2 (DIMmentionnée également comme Variant) :
    V2 = V1,
    IF V1 = V2 Then Test = "Hello" ...qui me retourne encore #VALEUR

    J'ai ensuite testé : If 4=4 Then Test = "Hello" ... J'ai obtenu mon "Hello"

    Je ne sais plus quoi tenter pour obtenir mon "Hello" avec une condition qui est moins triviale.
    Je soupçonne qu'il y a incompatibilité de type. J'ai tenté de multiples fonctions de changement de type sans succès.

    J'apprécie que vous me preniez par la main pour celle-là.

    Merci pour votre aide.

  2. #2
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Bonjour,
    essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF V1 = CVar("J") Then Test = "Hello"

  3. #3
    Invité
    Invité(e)
    Par défaut
    Le problème est que vba à peur du vide, le vertige sans doute!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if trim("" & v1) =  trim("" & v2) then

  4. #4
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Par défaut Excel refuse toujours de m'obéir.
    Merci à gnain et à rdurupt.

    J'ai tenté vos solutions, mais Excel ne veut rien savoir.

    Je vous envoie le code :
    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
     
    Public Function CalendrierProf(LeProf As Variant, LaDate As Variant, AMPM As Integer) As Variant
      Application.Volatile
      Dim NoLigne As Variant
      Dim H As Range
      Dim PProf, Prof As Variant
      Set H = Range("Affectations!H1:K253")
     
      NoLigne = WorksheetFunction.VLookup(LaDate, Range("Affectations!D15:E253"), 2) - 1
     
    '  CalendrierProf = H.Offset(NoLigne, 0)                 ' Retourne la bonne valeur
     
       Prof = H.Offset(NoLigne, 0)
    '  CalendrierProf = Prof                                 ' Retourne la bonne valeur
     
       PProf = Prof
    '  If PProf = Prof Then CalendrierProf = "Secrétariat"   ' Retourne #VALEUR
       If Trim("" & Prof) = CVar(Trim("" & "J")) Then CalendrierProf = "Secrétariat"           ' Retourne Secrétariat
     
    End Function
    En voyant le commentaire de rdurupt, j'ai aussi essayé NZ() qui fonctionne avec Access (empêche le passage de NULL), mais qu'Excel ne semble pas connaître.

    Merci encore de tenter de m'aider.

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,

    tu renvois une tableau dans ton "Prof" ... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       Prof = h.Offset(NoLigne, 1).Cells(1, 1)
       If Prof = "J" Then CalendrierProf = "Secrétariat"            ' Retourne Secrétariat
    faudrait prévoir le cas ou <> de J aussi ?


    Cdt.

  6. #6
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2014
    Messages : 13
    Par défaut Merci beaucoup!
    Merci de vous être penchés sur mon problème.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/05/2015, 16h53
  2. boucle if-then qui ne fonctionne pas
    Par les4c77 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/09/2007, 16h24
  3. Table qui ne réagit pas au clic d'un menu
    Par Premium dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 31/12/2006, 10h54
  4. If then qui ne marche pas
    Par PauseKawa dans le forum Access
    Réponses: 6
    Dernier message: 11/07/2006, 09h12
  5. Editbox d'activeX qui ne réagit pas au backspace
    Par mr.saucisse dans le forum MFC
    Réponses: 18
    Dernier message: 01/03/2006, 18h35

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