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 :

detecter cellule vide for each


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2014
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2014
    Messages : 163
    Points : 39
    Points
    39
    Par défaut detecter cellule vide for each
    Bonjour,


    je souhaite identifier les manques dans certains onglets de données mais rencontre un soucis
    En effet le cell.value = "" ne fonctionne pas du tout cela me rend row 1 column 1 alors que celle ci est bien rempli

    je test avec isempty cela ne fonctionne pas non plus
    je voudrais pouvoir identifier les cells vide dans chacune des lignes et colonnes de mon onglet

    une idée svp car je tourne en rond

    *
    alors que si je teste msgbox(cell.value) alors ca me renvoi le contenu de la cellule correctement

    merci à vous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each cell In Worksheets("Projects").Range("A2:M" & End_Project)
     
    If (cell.Value = "") Then
    MsgBox ("Row: " & Worksheets("Projects").Cells.row & " Column " & Worksheets("Projects").Cells.Column)
    End If

  2. #2
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,
    Citation Envoyé par Darkangel2014 Voir le message
    En effet le cell.value = "" ne fonctionne pas du tout
    Ça fonctionne très bien mais ton MsgBox n'affiche que ce que tu lui demandes d'afficher !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each Cell In Worksheets("Projects").Range("A2:M" & End_Project)
      If Cell.Value = "" Then
        MsgBox "Row: " & Cell.Row & " Column " & Cell.Column
      End If
    Next Cell
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Pour info, une variable de type Range ne contient pas uniquement l'adresse d'une cellule, elle contient toutes les référence de cette cellule, y compris la feuille et le classeur auxquels elle appartient.

    Donc, ta variable cell contient (entre autre) la référence à Worksheets("Projects") et ne pourrait pas être désignée comme cellule d'une autre feuille (à moins de lui assigner la cellule d'une autre feuille).

    D'une manière générale, une cellule de type Objet contient tous les parents de l'objet désigné et ne peut pas être utilisée elle-même comme membre d'un autre objet.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2014
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2014
    Messages : 163
    Points : 39
    Points
    39
    Par défaut
    effectivement bien vu merci à vous
    toutefois mon objectif n'est pas de m'afficher cela dans un msgbox comme vous pouvez l'imaginer

    mon objectif serait de pouvoir me reporter dans un array la valeur contenu dans la colonne A du row répéré
    je récupère donc l'id contenu en colonne A via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ID = Worksheets("Projects").Range("A:A")(cell.row, 1)
    et cela fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "ID: " & ID & " Column " & cell.Column
    mais comment mettre dans cela un array?
    je tente cela mais ne sait pas si cela fonctionnera à la suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If (cell.Value = "") Then
    ID = Worksheets("Projects").Range("A:A")(cell.row, 1)
    Lacks_Project = Array(ID, cell.Column)
     
    End If
    Next cell

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Darkangel2014 Voir le message
    ID = Worksheets("Projects").Range("A:A")(cell.row, 1)
    Il serait plus propre d'écrire ID = Worksheets("Projects").Cells(cell.Row, 1).Value.

    A moins que cell désigne une cellule de la feuille Projects (ce qui signifierait que tu n'as pas lu ou pas compris ma réponse précédente).
    Dans ce cas, il suffit d'écrire ID = cell.Value.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2014
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2014
    Messages : 163
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    merci pour ce correctif.
    pour être honnête je n'avais pas vu votre message précédent dont je viens de prendre connaissance.
    merci à vous pour ces explications très bien détaillées


    je me retrouve donc avec :
    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
    17
    18
     
    Private Sub Detect_Lacks()
     
    Dim End_Project, ID, n, i As Integer
    Dim Rng, cell As Range
    Dim Lacks_Project() As Variant
     
     
    End_Project = Worksheets("Projects").Range("A" & Rows.Count).End(xlUp).row
    For Each cell In Worksheets("Projects").Range("A2:M" & End_Project)
     
    If (cell.Value = "") Then
    ID = Worksheets("Projects").cells(cell.row, 1).Value
    Lacks_Project() = Array(ID, cell.Column)
     
    MsgBox "ID: " & ID & " Column " & cell.Column
    End If
    Next cell
    comment désormais intégrer et pouvoir verifer ce que lack_projects à comme enregistrements?
    merci à vous

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

Discussions similaires

  1. [Toutes versions] Références de cellules avec for each
    Par brubel dans le forum Excel
    Réponses: 2
    Dernier message: 09/02/2016, 00h35
  2. Comptage de cellule et For each
    Par Serendipity dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/01/2014, 16h27
  3. [XL-2000] detection cellule vide en vba
    Par jerem1 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/12/2010, 20h39
  4. Detecter Cellules Vides
    Par nouvelinscrit dans le forum VBA Word
    Réponses: 7
    Dernier message: 17/06/2010, 16h45
  5. [XL-2003] Cibler les cellules voulues dans un For Each
    Par spoutnikk dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/05/2010, 15h43

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