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 :

Quels sont les différents états qu'une cellule excel peut avoir ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Par défaut Quels sont les différents états qu'une cellule excel peut avoir ?
    Bonjour,

    Je suis devant un problème je fais des test par code VBA afin de ne pas exécuter l'action si la cellule est soit nulle soit = 0 soit vide j'ai le bloc IF suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (Sheets("final").Range("J" & i) <> "") Or (Sheets("final").Range("J" & i) <> 0) Or (IsNull(Sheets("final").Range("J" & i))) Then
    i est bon
    Si je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msgbox Sheets("final").Range("J" & i)
    Il m'affiche un messagebox vide ...

    Et il rentre toujours dans le if ... alors il y a peut être un état de la cellule que je n'ai pas pris en compte si oui lequel ?
    Les cellules sont copiés à partir d'une extraction CSV.

    Merci de votre aide ..

    Adrien GENDRE

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Où as-tu vu que le contenu d'une cellule pouvait être Null?
    Une cellule peut contenir une chaîne de longueur nulle (""), mais en aucun cas Null: attention il ne faut pas tout mélanger.

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir


    en complément :

    http://www.developpez.net/forums/d63...namique-nulle/


    bonne soirée
    michel

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par decondelite Voir le message
    Où as-tu vu que le contenu d'une cellule pouvait être Null?
    Une cellule peut contenir une chaîne de longueur nulle (""), mais en aucun cas Null: attention il ne faut pas tout mélanger.
    L'expression IsNull(la_cellule_concernée.value) est recevable...==>> et donc également (par défaut) : IsNull(la_cellule_concernée)

    L'erreur est ailleurs dans l'expression (des <> au lieu de =)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Par défaut
    J'ai essayé de trouver son état avec le code suivant :
    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
     
            If IsNull(Sheets("final").Range("J" & i)) Then
                MsgBox "elle est bien nulle"
            Else
            If Sheets("final").Range("J" & i) = "" Then
            MsgBox "elle est vide"
            Else
            MsgBox "elle n'est pas vide"
                If Sheets("final").Range("J" & i) = 0 Then
                MsgBox "elle est = 0"
                Else
                MsgBox "elle n'est pas égale = zéro"
                End If
            End If
            MsgBox "elle n'est pas nulle"
            End If
    Et elle va jusqu'à "elle n'est pas égale = zéro" ...

    De quoi cela peut provenir ... j'ai essayé de passer les cellules en nombre, texte, standard ... toujours la même chose.

    Merci

    Cdlt

    Adrien

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Mmm... bizarre...

    Et si tu rajoutes .Value après Range? Si ça marche toujours pas, avec Cells(10,i) ça donne quoi?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Par défaut
    merci pour l'aide que vous m'apportez

    Même avec .Value ou Cells(10,i) il passe toujours le test

    Je pense que le CSV d'origine est un peu "batard" n'est-il pas possible de dire les cellules qui ont un contenu tu les mets en nombre les autres tu les met "" histoire de pouvoir faire autant de test que je veux derrière.

    Sachant que les cellules qui sont remplies se terminent forcément par zéro j'ai aussi essayé le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Right(Machin,1) <> 0
    ou même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Right(Machin,1) <> "0"
    Il passe quand même ces deux tests, alors que quand je l'affiche dans un msgbox j'ai bien quelque chose de vide on dirait qu'il ne peut rien tirer de ces cellules et donc que n'importe quel peut passer ...

  8. #8
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    L'expression IsNull(la_cellule_concernée.value) est recevable
    Bonjour tlm,

    Oui mais non...peu importe ce que comporte la cellule ou qu'elle soit réellement vide, IsNull renverra toujours le résultat False.
    IsNull s'utilise avec des variables, pas avec des cellules.

    SilkyRoad a donné la réponse, pour tester si la cellule est réellement vide, c'est à dire qu'elle ne comporte ni chaîne de caractères ni formule, il faut utiliser IsEmpty
    .

  9. #9
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour fring,

    Tu oublies peut-être quelques aspects, parmi lesquels les suivants :
    - tu peux toujours attribuer dynamiquement une valeur Null à une cellule (en utilisant Value)
    - une cellule peut avoir été alimentée par une source externe contenant un Null

    Ce sont là deux cas de figure ...
    Et un test avec IsNull s'impose alors, avec certains traitements.
    Tu veux un exemple ? Microsoft, peut-être alors ...
    http://support.microsoft.com/kb/294782/fr

  10. #10
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Uc...il me semble que c'est un forum VBA EXcel ! Envoyer une usine à gaz avec un code HTML où tu as un IsNull noyé tout au fond de la cave ne me semble pas vraiment approprié.

    Donne moi un seul petit bout de code, un petit bout de fichier (correspondant à Excel oeuf corse), comme tu veux où IsNull(Range("A1")) renvoie la valeur True, perso moi je ne vois pas

    Cdlt

  11. #11
    Membre chevronné
    Inscrit en
    Octobre 2008
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2008
    Messages : 273
    Par défaut
    Citation Envoyé par planete.gonz Voir le message
    Bonjour,
    Je suis devant un problème je fais des test par code VBA afin de ne pas exécuter l'action si la cellule est soit nulle soit = 0 soit vide j'ai le bloc IF suivant :
    Tu es sûr que tu n'as pas d'espace dans tes cellules "vides" ?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Par défaut
    Justement dans certaines j'ai un espace donc je vois le code ASCII 32 mais dans d'autres, j'obtiens une erreur. Je ne peux pas regarder le code ASCII qu'elle contient.

  13. #13
    Membre chevronné
    Inscrit en
    Octobre 2008
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2008
    Messages : 273
    Par défaut
    Tu as essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("machin").value <> Chr(32)

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Par défaut
    Impeccable !

    Merci beaucoup !

    Capricieux quand même cet Excel ...

    Cdlt

    Adrien

  15. #15
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Problème résolu?

    Bouton !

    Merci
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. quels sont les différentes possiblités de requêtes
    Par marc4 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 27/10/2009, 21h10
  2. Réponses: 10
    Dernier message: 08/04/2007, 20h17
  3. Réponses: 7
    Dernier message: 05/04/2007, 16h10
  4. Réponses: 5
    Dernier message: 11/09/2006, 17h29
  5. Réponses: 1
    Dernier message: 14/11/2005, 11h04

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