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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 17
    Points
    17
    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 éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    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 éminent sénior

    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
    Points : 20 147
    Points
    20 147
    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
    Points : 5 537
    Points
    5 537
    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 à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 17
    Points
    17
    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 éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    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 à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 17
    Points
    17
    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
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    Bonjour

    avant ton test, mets cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Asc(Right(machin, 1))
    cela te donnera le code ascii du dernier caractere, ca permetra de savoir ce qui se trouve à la fin de tes valeur

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Code ASCII 32 c 'est un espace du coup je test sur cette valeur et cela fonctionne. Merci beaucoup pour votre aide cela m'a bien débloqué.

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

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    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
    .

  11. #11
    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
    Points : 5 537
    Points
    5 537
    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

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

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    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

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Nouveau problème lié
    Sur une autre colonne le test avec ASC(Machin) <> 32 ne fonctionne pas il me met l'erreur 'Argument ou appel de procédure incorrect'.

    Et la cellule n'est toujours pas vide et il me met cette erreur aussi quand je veux afficher le code ASCII dans un msgbox ...

    Merci de votre aide

    Cdlt

    Adrien

  14. #14
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2008
    Messages : 273
    Points : 323
    Points
    323
    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" ?

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 17
    Points
    17
    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.

  16. #16
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 45

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

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

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Merci beaucoup !

    Capricieux quand même cet Excel ...

    Cdlt

    Adrien

  18. #18
    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 : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

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

    Bouton !

    Merci

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