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 :

Vérifier si plusieurs cellules de la ligne active ne sont pas vides [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 85
    Par défaut Vérifier si plusieurs cellules de la ligne active ne sont pas vides
    Bonjour,
    Je souhaite vérifier si plusieurs cellules (colonnes A, B, C et D) de la ligne active ne sont pas vides.
    J'ai essayé ce code qui, je le sais, est erroné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ActiveCell.EntireRow.Cells(1, 4).Value <> ""
    Pouvez-vous m'éclairer?
    Merci.

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Une solution

    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
    Dim rg As Range
    Dim str As String
     
    For Each rg In Range("A" & ActiveCell.Row & ":D" & ActiveCell.Row)
        If rg.Value <> "" Then
            If str = "" Then
                str = "Non vides : "
            Else
                str = str & ", "
            End If
            str = str & rg.Address
        End If
    Next
     
    MsgBox IIf(str = "", "Toutes les cellules sont vide", str)

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function EstVide(Rng As Range) As Boolean
     
    EstVide = Application.CountA(Rng) < Rng.Count
    End Function
    Teste A11
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Test()
     
    If EstVide(Range("A1:D1")) Then MsgBox "Certaines cellules vides"
    End Sub
    A adapter

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Hello Mercatog,

    Je savais bien qu'il devait y avoir plus court

    Par contre, je crois qu'il manque une instruction a cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EstVide = Application.WorksheetFunction.CountA(Rng) < Rng.Count

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour jfontaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CountA(Rng)
    est aussi valable.

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    eh ben, si en plus il y a des instructions cachées

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 85
    Par défaut
    Merci de votre aide précieuse.

    Je dois cependant avouer que le résultat attendu n'est pas au rendez-vous.
    En effet, voici le code comme je l'ai repris suivant vos indications. Aurais-je commis des erreurs ou des oublis?

    Code la macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If EstVide(Range("A" & ActiveCell.Row & ":D" & ActiveCell.Row)) Then
    MsgBox "Une des cellules A à D de la ligne active n'est pas vide"
    Else
    MsgBox "Toutes les cellules A à D de la ligne active sont vides"
    End If
    Code la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Function EstVide(Rng As Range) As Boolean
    EstVide = Application.WorksheetFunction.CountA(Rng) < Rng.Count
    End Function
    Merci de votre examen.

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

Discussions similaires

  1. [XL-2010] macro pour supprimer lignes qui ne sont pas en gras
    Par lovely2604 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/11/2014, 21h02
  2. Ouverture d'un formulaire si plusieurs cellules d'une ligne ont été modifiées
    Par sabine_toulouse dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/02/2014, 16h20
  3. Coloriser deux cellules de la ligne active d'un DbGrid
    Par karinya dans le forum Composants VCL
    Réponses: 1
    Dernier message: 01/09/2010, 10h03
  4. UNION ? des lignes qui ne sont pas prises...
    Par fred23195 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/12/2005, 15h50

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