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 :

Obligation de remplir toute les cellules pour pouvoir continuer. [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Obligation de remplir toute les cellules pour pouvoir continuer.
    Bonjour,

    Je voulais demander à la communauté de ce site si c'était possible de rendre obligatoire la saisie de chaque cellule sur une feuille en sachant que la Range est (A1:AM126).
    Je ne suis pas encore très habitué au langage VBA, j'espère que vous serez un peu indulgent avec moi.

    Coordialement Enzo.CE.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    fait un find empty sur ta plage si c'est oui alors elle ne sont pas toutes remplie

    ou un countifs aussi sur les cellules empty de la plage

    tu a aussi le specialcells
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if Range("A1:J1").SpecialCells(xlCellTypeBlanks).Count> 0 then
     
    end if
    ou meme encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if Application.WorksheetFunction.CountBlank(Sheets("Feuil1").Range("A1:J1"))> 0 then
     
    end if
    bref le B a BA d'excel vba
    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

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Seule la seconde des deux solutions proposées par patricktoulon met à l'abri de surprises (erreur si une ligne vide est malheureusement intercalée dans la plage parcourue)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Bonjour Patricktoulon et unparia
    Suite à votre réponse j'ai essayé vos 2 codes, seulement après plusieurs relecture je penses que je ne vous aies pas donnés assez d'information pour que vous puissiez m'aider. Mon objectif de base c'était de créer un bouton pour pouvoir convertir un fichier Xml en Csv en appuyant sur un Bouton, ce qui est fait. Or maintenant je souhaiterais que le document fasse un check-up de toute la feuille que je veux sauvegarder et me dire si toute les cellules sont remplis ( et si possible arrêter le programme si tout n'est pas remplis ). Je ne sais pas si ma formulation est la bonne mais j'espère qu'elle vous aura éclairé sur ce que je désires faire et encore désolé pour ces imprécisions.

    Coordialement

    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
    Sub Macro_Sélection_de_feuille()
    '
    ' Macro_Sélection_de_feuille Macro
    '
     
         Sheets("FICHIER EXEMPLE").Select
        Range("A1:AM126").Select
        Application.DisplayAlerts = False
         If MsgBox("Etes-vous certain de vouloir convertir ce fichier ?", vbYesNo, "Demande de confirmation") = vbYes Then
        ActiveWorkbook.SaveAs Filename:= _
            "C:\Users\Alexandre Mautret\Desktop\FICHIER EXEMPLE", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
            ActiveWindow.Close
            Application.DisplayAlerts = True
    End If
    End Sub

  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 Enzo.CE Voir le message
    Je voulais demander à la communauté de ce site si c'était possible de rendre obligatoire la saisie de chaque cellule sur une feuille en sachant que la Range est (A1:AM126).
    A mon avis, on ne peut pas imposer la saisie d'un ensemble de cellules.
    Par contre, on peut empêcher une action (un calcul, une sauvegarde, etc.) si un ensemble de cellules n'est pas intégralement complété.

    Mais pour indiquer comment le faire, il faudrait savoir quelle type d'action est à bloquer.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Menhir Voir le message
    A mon avis, on ne peut pas imposer la saisie d'un ensemble de cellules.
    Par contre, on peut empêcher une action (un calcul, une sauvegarde, etc.) si un ensemble de cellules n'est pas intégralement complété.

    Mais pour indiquer comment le faire, il faudrait savoir quelle type d'action est à bloquer.
    Bonjour Menhir,

    Vous avez parfaitement compris ce que je voulais faire, mon but étant de faire un check-up de toute les cellules avant de sauvegarder pour convertir mon fichier en CSV. Il faudrait donc pouvoir bloquer la sauvegarde si toute les cases ne sont pas remplis, afficher un message d'erreur et montrer quelles sont celles qui ne sont pas remplis.

    J'ai déjà une meilleur idée de ce que je dois chercher et faire, j'espère que vous pourrez encore m'aider

    Cordialement Enzo CE

  7. #7
    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
    En partant du principe que tes cellules "non saisies" correspondent bien à des cellules vides (sans valeurs ni fonctions), mettre en début de code :

    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 CC as Range
     
        For Each CC in Range("A1:AM126")
            If CC.Text = "" Then
                MsgBox("La Cellule " & CC.Address & " n'a pas été saisie." & Chr(13) & "Conversion annulée", vbCritical + vbOKOnly,"ERREUR")
                Exit Sub
            End If
        Next CC
     
        If MsgBox("Etes-vous certain de vouloir convertir ce fichier ?", vbYesNo, "Demande de confirmation") = vbNo Then Exit Sub
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:="C:\Users\Alexandre Mautret\Desktop\FICHIER EXEMPLE", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
        Application.DisplayAlerts = True
     
    End Sub
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Menhir Voir le message
    En partant du principe que tes cellules "non saisies" correspondent bien à des cellules vides (sans valeurs ni fonctions), mettre en début de code :

    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 CC as Range
     
        For Each CC in Range("A1:AM126")
            If CC.Text = "" Then
                MsgBox("La Cellule " & CC.Address & " n'a pas été saisie." & Chr(13) & "Conversion annulée", vbCritical + vbOKOnly,"ERREUR")
                Exit Sub
            End If
        Next CC
     
        If MsgBox("Etes-vous certain de vouloir convertir ce fichier ?", vbYesNo, "Demande de confirmation") = vbNo Then Exit Sub
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:="C:\Users\Alexandre Mautret\Desktop\FICHIER EXEMPLE", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
        Application.DisplayAlerts = True
     
    End Sub
    J'ai donc mis votre code comme vous l'avez dis au début, j'obtient alors ce résultat :
    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
        Sub Macro_Sélection_de feuille()
        Dim CC As Range
     
        For Each CC In Range("A1:AM126")
            If CC.Text = "" Then
                MsgBox("La Cellule" & CC.Address & " n'a pas été saisie." & Chr(13) & "Conversion annulée", vbCritical + vbOKOnly,"ERREUR")
                Exit Sub
            End If
        Next CC
     
        If MsgBox("Etes-vous certain de vouloir convertir ce fichier ?", vbYesNo, "Demande de confirmation") = vbNo Then Exit Sub
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:="C:\Users\Alexandre Mautret\Desktop\FICHIER EXEMPLE", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
        Application.DisplayAlerts = True
     
    End Sub
    Votre code semble juste mais lors du test de ce dernier j'obtient une erreur de compilation : Erreur synthaxe à la ligne de MsgBox .
    Je penses que l'apparition de cette erreur vient du fait que j'ai mal placé mon code mais je vous fais quand même part de cette dernière en espérant que vous pourrez m'aider.

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

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

    Enlève les parenthèses de la première MsgBox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "La Cellule " & CC.Address & " n'a pas été saisie." & Chr(13) & "Conversion annulée", vbCritical + vbOKOnly,"ERREUR"
    Cordialement,
    Franck

  10. #10
    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 Enzo.CE Voir le message
    Votre code semble juste mais lors du test de ce dernier j'obtient une erreur de compilation : Erreur synthaxe à la ligne de MsgBox .
    Je pense que ça vient du fait que j'ai copié ton MsgBox qui est au format "fonction" avec parenthèses.
    Essaye cette syntaxe pour le MsgBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                MsgBox "La Cellule" + CC.Address + " n'a pas été saisie." + Chr(13) + "Conversion annulée", vbCritical + vbOKOnly, "ERREUR"
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Je pense que ça vient du fait que j'ai copié ton MsgBox qui est au format "fonction" avec parenthèses.
    Essaye cette syntaxe pour le MsgBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                MsgBox "La Cellule" + CC.Address + " n'a pas été saisie." + Chr(13) + "Conversion annulée", vbCritical + vbOKOnly, "ERREUR"
    Votre code Marche super bien merci seul bémol il ne scan que la feuille où est présent le bouton or le bouton n'est pas sur la même feuille qui est à analyser.

    Edit : Dans mon premier code je me suis souvenu de comment j'ai sélectionner la feuille que je voulais soit : Sheets("FICHIER EXEMPLE").Select
    Encore merci pour votre patience et votre aide

  12. #12
    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 Enzo.CE Voir le message
    seul bémol il ne scan que la feuille où est présent le bouton or le bouton n'est pas sur la même feuille qui est à analyser.
    Evite les Select, c'est pas beau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        For Each CC In Sheets("FICHIER EXEMPLE").Range("A1:AM126")
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/01/2015, 14h51
  2. [XL-2010] Code aléatoire pour toutes les cellules vides d'une colonne
    Par GADENSEB dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/09/2014, 16h07
  3. [Débutant] Remplir toute les cellules vide de la derniere rangee
    Par lololaurent dans le forum VB.NET
    Réponses: 0
    Dernier message: 13/02/2014, 22h23
  4. [XL-2007] Un formule math pour toutes les cellules d'une colone
    Par mentat dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 09/01/2010, 16h29
  5. Réponses: 2
    Dernier message: 20/02/2008, 18h08

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