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 :

Simplifier les condition d'un If [XL-2016]


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
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2017
    Messages : 31
    Par défaut Simplifier les condition d'un If
    Bonjour,

    Je souhaite tester si toutes les cellules d'une plage ("A7:J7") sont remplies.
    J'ai écrit ceci (qui fonctionne) :
    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 Target.Row = 7 _
        And IsEmpty(Range("A7").Value) = False _
        And IsEmpty(Range("B7").Value) = False _
        And IsEmpty(Range("C7").Value) = False _
        And IsEmpty(Range("D7").Value) = False _
        And IsEmpty(Range("E7").Value) = False _
        And IsEmpty(Range("F7").Value) = False _
        And IsEmpty(Range("G7").Value) = False _
        And IsEmpty(Range("H7").Value) = False _
        And IsEmpty(Range("I7").Value) = False _
        And IsEmpty(Range("J7").Value) = False _
        Then
     
            MsgBox ""
     
        End If
    Mais voilà, je trouve pas ça très beau de tester les cellules les unes après les autres, et je voudrais savoir s'il n'y avait pas une méthode qui pourrait renvoyer un boolean si toutes les cellules de la plage ne sont pas vides. On peut négliger les cellules comportant une formules.

    merci pour votre attention.

    Sam

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 66
    Par défaut
    Bonjour,

    un truc simple comme ceci ne marcherait pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [...]And IsEmpty(Range("A7:J7").Value)[...]
    Cdt,

  3. #3
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Row = 7 And Len([a7] & [b7] & [c7] & [d7] & [e7] & [f7] & [g7] & [h7] & [i7] & [J7]) = 0 Then
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2017
    Messages : 31
    Par défaut
    Bonjour jahExodus et JP.

    JahExodus, j'avais essayé ta solution et dès qu'une case était rempli, la condition était vérifiée (ce que je ne veux pas).

    Merci JP pour cette solution, je la teste demain au travail, mais à première vu y'a pas de raison que ça ne marche pas.

    Je mettrai cette discussion en résolu demain matin si ça fonctionne.

    Merci à tous les deux pour votre participation

    Sam

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Moi, je lis :
    si toutes les cellules d'une plage ("A7:J7") sont remplies.
    Question (car solution en dépendant) : ces cellules ne contiennent-elles QUE des constantes ou peuvent-elles contenir également des résultats de formules ?

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2017
    Messages : 31
    Par défaut
    Bonjour Unparia.

    En fait, l'utilisateur rentre des données dans chacune des cellules.
    Il y a juste une cellule qui fait prend la valeur "h" si la cellule adjacente est remplie. On peut donc la mettre de côté pour les conditions.

    Sam

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    1 parmi tant d'autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If target.Row = 7 And Join(WorksheetFunction.Index(Range("A7:J7").Value, 1, 0), "") = "" Then
    MsgBox "queudal en ligne 7"
    End If
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Tu lis encore en diagonale, patricktoulon ... Relis bien sa demande !

  9. #9
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Citation Envoyé par Cap'taineSamSam Voir le message
    Je souhaite tester si toutes les cellules d'une plage ("A7:J7") sont remplies.
    Philippe m'a devancé alors voici une variante avec Evaluate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Demo1()
        V = Filter([IF(A7:J7="",ADDRESS(7,COLUMN(A7:J7),4))], False, False)
        If UBound(V) > -1 Then MsgBox "Manque saisie dans " & Join(V, ", "), vbExclamation, " Contrôle :"
    End Sub
    ___________________________________________________________________________________________________________

         Merci de cliquer sur en bas à droite de chaque message ayant aidé puis sur pour clore cette discussion …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  10. #10
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Une fonction personnalisée qui ne tient pas compte des cellules vides contenant une formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Toutes_Remplies(Plage As Range) As Boolean
        Toutes_Remplies = (Application.CountA(Plage) = Plage.Cells.Count)
    End Function
    EDIT :
    oups, désolé...
    Je n'avais pas lu la dernière proposition de philippe...

  11. #11
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Franck
    Oui.
    Attention toutefois aux surprises résultant de la conjugaison :
    - de l'affectation dynamique d'une valeur VBEmpty (cela va te rappeler une discussion)
    - de la configuration des options Excel

    Amitiés

  12. #12
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour Jacques,
    Citation Envoyé par unparia Voir le message
    Attention toutefois aux surprises résultant de la conjugaison :
    - de l'affectation dynamique d'une valeur VBEmpty (cela va te rappeler une discussion)
    - de la configuration des options Excel
    VbEmpty Ok. En effet, cela me rappelle quelque chose
    Mais quid de la configuration des options Excel?

  13. #13
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Ah ..
    1) (aide vba) :
    WorksheetFunction.CountA, méthode
    Compte le nombre de cellules non vides, ainsi que les valeurs dans la liste d'arguments.
    ....
    Une valeur peut être n'importe quel type d'informations, notamment des valeurs d'erreur et du texte vide ("").
    (clair)
    2) les options de Exel (mais moins important) :
    On peut configurer de sorte à ce que l'affectation de vbEmpty mette un 0 et non ""
    Observe que l'affectation de "", mettrait un "" (mais qui ne serait pas un VIDE non plus)
    Seule l'affectation de VBNullString ne compromettrait pas ton code

    Rigolo qu'on en ait parlé il y a peu, non ?

    Amitiés

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

Discussions similaires

  1. Syntaxe pour les conditions
    Par Gabout dans le forum VBA Access
    Réponses: 2
    Dernier message: 06/05/2007, 12h27
  2. Réponses: 11
    Dernier message: 01/05/2007, 00h15
  3. Opérateur dans les conditions
    Par ez3kiel dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/03/2007, 14h53
  4. Les conditions dans Dreamweaver
    Par zeugzeug dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 06/01/2007, 12h48
  5. Réponses: 4
    Dernier message: 23/11/2006, 22h05

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