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 :

Test si la cellule sélectionnée est vide


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Test si la cellule sélectionnée est vide
    Bonjour,


    Je parcours une ligne, cellule par cellule, dans une boucle, en les sélectionnant pour faire avancer la boucle. Si elle a des infos je fais des traitements, si elle est vide je voudrais ne rien faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    val2 = IIf(ActiveCell.Offset(0, 1).Select = "", Null, _
        CLng(ActiveCell.Value * 100) / 10000)
    Le problème c'est que la sélection fait foirer le test, apparemment quand k'entre dans la cellule elle n'est plus considérée comme vide ( = ""). Je dois mettre quoi à la place des "" ?

    Merci d'avance.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Fais précéder ta ligne de
    If not isempty(ActiveCell.Offset(0, 1)) then
    'ta ligne

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Merci mais... marche pas ! (ou à moitié).

    Si la cellule est vide, je n'entre pas, puis je reboucle. Je suis resté sur ma cellule précédente, donc je boucle fou. Il faut que je sélectionne la cellule pour avancer à chaque itération, vide ou pas vide.

    Par contre je peux faire (dans ma boucle) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If isempty(ActiveCell.Offset(0, 1)) then
    val = Null
    ActiveCell.Offset(0, 1).Select
    else
    ma ligne
    end if
    Mais c'est un peu tiré par les cheveux.
    S'il y a une solution plus propre je suis preneur.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Montre ta boucle

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Bonjour dapangma, le forum,

    Je pense que tu utilise un boucle 'For....Next'.
    As-tu essayé avec une boucle 'For Each....In....Next' ?

    Un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each cel In Range("A1:L1").Cells
        If IsEmpty(cel) Then cel.Value = cel.Address
    Next
    La boucle balaie la plage A1...L1. Si la cellule analysée est vide, elle y inscrit son adresse (ça marche, j'ai testé)

    A toi donc d'adapter à ton sujet.

    Espérant avoir répondu.

    Cordialement.

  6. #6
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    salut à tous,

    Citation Envoyé par Papou93 Voir le message
    Bonjour dapangma, le forum,

    Je pense que tu utilise un boucle 'For....Next'.
    As-tu essayé avec une boucle 'For Each....In....Next' ?

    Un exemple :

    For Each cel In Range("A1:L1").Cells
    If IsEmpty(cel) Then cel.Value = cel.Address
    Next

    La boucle balaie la plage A1...L1. Si la cellule analysée est vide, elle y inscrit son adresse (ça marche, j'ai testé)

    A toi donc d'adapter à ton sujet.

    Espérant avoir répondu.

    Cordialement.
    c'est d'autant plus une bonne solution car elle n'utilise pas les "select" et "active".

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Un autre avantage intéressant est que l'on peut balayer des zones de cellules non contigües, comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each cel In Range("A1:L1, C3:E3").Cells
      If IsEmpty(cel) Then cel.Value = cel.Address
    Next
    Cordialement

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Dapangma et le forum
    Si la cellule est vide, je n'entre pas, puis je reboucle. Je suis resté sur ma cellule précédente, donc je boucle fou. Il faut que je sélectionne la cellule pour avancer à chaque itération, vide ou pas vide.
    Tu travailles sur ActiveCell avec des select.
    Montre ta macro qu'on t'aide à éliminer ceux-ci.
    Pour éliminer ton problème, il faudra avoir une idée du but à atteindre.
    val2 = IIf(ActiveCell.Offset(0, 1).Select = "", Null, CLng(ActiveCell.Value * 100) / 10000)
    ??? Que vient faire ton sélect ? Évites de mélanger les instructions pour qu'Excel ne s'emmêle pas les pinceaux.
    Merci mais... marche pas ! (ou à moitié).
    Normal, il a pas de jambes (ou à moiié).

    Plus tu es moins précis, moins on peut plus t'aider!
    Si je réponds "chez moi ça marche, avec juste une petite modif" ça t'aidera sûrement ?

    Pas de code, pas de but à atteindre, des commentaires imprécis... reste la magie, je pense.
    A+

Discussions similaires

  1. [XL-2010] Supprimer plusieurs lignes si la cellule XX est vide
    Par David62510 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/01/2015, 16h28
  2. Réponses: 9
    Dernier message: 14/08/2013, 12h37
  3. Test si fichier AS/400 est vide
    Par cbard dans le forum AS/400
    Réponses: 1
    Dernier message: 12/01/2009, 12h37
  4. Test si cellule est vide EXCEL POI JAKARTA
    Par skillipo dans le forum Documents
    Réponses: 2
    Dernier message: 13/03/2008, 13h03
  5. Test si une ligne excel est vide avant d'importer le ficher
    Par skillipo dans le forum VBA Access
    Réponses: 3
    Dernier message: 30/11/2007, 11h25

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