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 :

Contrôle de saisie


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de tequillaman
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 112
    Points : 64
    Points
    64
    Par défaut Contrôle de saisie
    Bonjour à tous,
    J'ai un petit soucis. Les techniciens doivent remplir un tableau mais zap volontairement ou non une saisie très importante.
    La valeur qu'ils doivent saisir ne leur est communiquée qu'à un instant T.
    Je voudrais que quand ils remplissent une cellule, il y ai un contrôle qui vérifie si une autre cellule est bien remplie sinon message pour le leur rappeler.

    Je ne sait pas comment le faire.
    J'ai tester sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub verif()
    If Range("AH7") <> "" And Range("B7") = "" Then
    MsgBox "merci de remplir le poids de la billette A1"
    End If
    End Sub
    dans général de ma feuille mais je ne sait pas comment le lancer. C'est possible directement depuis ma cellule AH7 de mettre une formule qui lancerai un msgbox? Sachant que cette cellule est une liste déroulante (validation de données).
    J’espère avoir été clair

    merci par avance

  2. #2
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour tequillaman,

    Tu peux mettre dans le module de la feuille en question le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Replace(Target.Address, "$", "") = "AH7" Then Call verif
    End Sub
    Worksheet_Change est une procédure évènementielle qui se déclenche lorsqu'une ou plusieurs cellules sont modifiées, la variable Target est justement la plage qui vient d'être modifiée.
    En testant le Target tu peux déclencher uniquement lorsqu'il s'agit de la cellule AH7.
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  3. #3
    Membre du Club Avatar de tequillaman
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 112
    Points : 64
    Points
    64
    Par défaut
    Merci beaucoup, j'ai pu l'adapter à mon besoin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Replace(Target.Address, "$", "") = "AH7" And Range("B7") = "" Then
        MsgBox "merci de remplir le poids de la billette " & Range("A7")
        Range("AH7").Select
        Selection.ClearContents
        End If
    End Sub
    Est-ce possible de l'étendre car j'ai plusieurs cellules à vérifier AH7:AK56;AH64:AK113 a la place de AH7 et B7:B56;B64:B113 a la place de B7?
    C'est à dire: si une valeur est saisie dans la première plage et que la cellule de la seconde plage qui lui correspond (même ligne) est vide, le msgbox s'ouvre et sa effece la cellule qu'on vient de remplir.
    Si c'est possible, se serait cool, sa m'éviterais de faire un pavé avec toutes les cellules une par une.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Dans excel, il existe un outil Validation de données qui à mon avis permet de faire le même travail sans passer par du VBA mais je n'ai pas lu en profondeur le critère exact.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre du Club Avatar de tequillaman
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 112
    Points : 64
    Points
    64
    Par défaut
    J'utilise déjà la validation de donnée sur la cellule à contrôler avec une liste déroulante. Je ne peut pas mettre en critère de validation de données ma liste & la condition que la cellule voulue ne soit pas vide.
    Je test avec une boucle for each mais je ne sait pas comment faire ma variable qui remplacera le AH7 et le B7 que j'ai en dur pour le moment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim CurCell As Object
    For Each CurCell In Range("AH7:AK56;AH64:AK113")
     
        If Replace(Target.Address, "$", "") = "AH7" And Range("B7") = "" Then
        MsgBox "merci de remplir le poids de la billette " & Range("A7")
        Range("AH7").Select
        Selection.ClearContents
        End If
     
    Next
     
     End Sub

  6. #6
    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 tequillaman Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If Replace(Target.Address, "$", "") = "AH7" And Range("B7") = "" Then
    Il est peu probable que ton code marche.
    Tu vérifies une condition se trouvant dans une autre cellule (B7) mais tu empêches l'utilisateur de quitter AH7.
    Autrement dit, si l'utilisateur veut modifier AH7 alors que B7 est vide, il se retrouve pris dans un piège dont il ne pourra pas se sortir : ne pouvant quitter AH7, il ne peut pas modifier B7.

    Cela dit, je suis d'accord avec Philippe (salut ) : il serait plus simple de faire ça avec des validation de données.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Membre du Club Avatar de tequillaman
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 112
    Points : 64
    Points
    64
    Par défaut
    Bonjour Menhir,
    Quand je fait cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ' Private Sub Worksheet_Change(ByVal Target As Range)
    '
    '    If Replace(Target.Address, "$", "") = "AH7" And Range("B7") = "" Then
    '    MsgBox "merci de remplir le poids de la billette " & Range("A7")
    '    Range("AH7").Select
    '    Selection.ClearContents
    '    End If
    '    If Replace(Target.Address, "$", "") = "AH8" And Range("B8") = "" Then
    '    MsgBox "merci de remplir le poids de la billette " & Range("A8")
    '    Range("AH8").Select
    '    Selection.ClearContents
    '    End If
    'End Sub
    C'est bon. Sauf que j'ai une 100ene de lignes à faire donc plutôt lourd comme truc. C'est pourquoi j'ai pensé à la boucle mais je ne sait pas comment remplacer les valeurs ah7 et b7 que j'ai mise en dur pour que se soit des variables qui suivent la boucle.

    S'il est possible de le faire via la validation de donnée, se serait cool.

    J'ai réussi avec la validation de donnée, soit à limiter la saisie à une liste de choix, soit à empêcher la saisie si l'autre case est vide mais pas les deux en même temps. Je doit mettre le contrôle sur cette case car c'est la seule colonne du tableau que je suis sur qu'ils remplissent.

    Si vous avez des idées même sans macro, je suis preneur

  8. #8
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    Moi aussi je suis d'accord avec Philippe et Menhir.
    Tu vas dans données/Validation des données.
    Dans la liste autoriser, tu choisis Personnaliser.
    En dessous, tu mets la formule suivante :
    J'ai repris les références dans un post précédent. A modifier selon avec les références relatives, ou absolues,voir mixte ...
    Attention, il faut impérativement décocher l'option "Ignorer si vide".
    Bonne utilisation.
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  9. #9
    Membre du Club Avatar de tequillaman
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 112
    Points : 64
    Points
    64
    Par défaut
    bonjour jerome,
    Comme annoncé, j'ai déjà utilisé la validation de donnée.
    J'ai dans les options autoriser: liste et dans formule ma liste de choix pour que l'utilisateur n'ai que 4 saisies possibles.

    J'ai testé aussi avec l'option autoriser: personnalisé et en formule =nbval(b7) se qui m'interdit la saisie si b7 est vide.

    Ce que je voudrais, c'est les deux en même temps mais je ne pense pas que se soit possible juste avec la validation de données sauf si on peut faire la liste d'une autre manière. C'est pour cela que je me casse les dents sur les macros

    Pour info, je voudrais un truc du genre


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    For i = 7 To i = 113
     
        If Replace(Target.Address, "$", "") = "AH" & i And Range("B" & i) = "" Then
        MsgBox "merci de remplir le poids de la billette " & Range("A" & i)
        Range("AH" & i).Select
        Selection.ClearContents
        End If
    i = i + 1
    Next
     
     End Sub
    Sauf que je voudrais que cela fonctionne mdr
    quand je fait sa, si je rentre une valeur dans ah7 et que b7 est vide, rien ne se passe

  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
    Peut-être comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Intersect(Target, Range("AH7:AH113")) Is Nothing Then Exit Sub
        If Cells(Target.Row,2) = "" Then
            MsgBox "merci de remplir le poids de la billette " & Cells(Target.Row,1)
            Target.Select
            Target.ClearContents
        End If
    End Sub
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Membre du Club Avatar de tequillaman
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 112
    Points : 64
    Points
    64
    Par défaut
    Merci menhir, sa a l'air de se rapprocher, juste quelques bugg a corriger

    si je met bien la valeur dans la colonne b et ensuite dans ah c'est bon

    si je fait directement dans ah7, j'ai une erreur d’exécution 1004 impossible de modifier une cellule fusionnée en effet, ma cellule va de af à ak
    second problème et là c'est la cata, si je vide le contenu d'une ligne (exemple erreur de saisie) j'ai le msgbox en continu d'ouvert, boucle interminable de la mort, obliger de faire ctrl alt suppr pour fermer excel

  12. #12
    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
    Bonjour
    J'irais personnellement dans ce truc à grands coups de balai d'entrée de jeu plutôt que de laisser saisir puis refuser, effacer, etc ...
    Je permettrais même pas l'accès et renverrais immédiatement à la cellule qui devrait être remplie.
    Il suffit pour cela d'utiliser l'évènement selectionchange plutôt que Change.
    Philosophie : on n'attend pas qu'un automobiliste soit engagé dans une rue où sont effectués des travaux pour le lui signaler et l'inviter à en ressortir ! On barre le passage et on lui en interdit d'emblée l'accès.
    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.

  13. #13
    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 tequillaman Voir le message
    impossible de modifier une cellule fusionnée en effet, ma cellule va de af à ak
    On ne le répètera jamais assez : la fusion de cellule, c'est une source de problèmes (surtout avec VBA) à éviter autant que possible (en c'est généralement évitable).

    second problème et là c'est la cata, si je vide le contenu d'une ligne (exemple erreur de saisie) j'ai le msgbox en continu d'ouvert, boucle interminable de la mort, obliger de faire ctrl alt suppr pour fermer excel
    Problème différent mais même solution : supprimer la fusion.
    De tout façon, quand le contenu d'une cellule atteint la limite, elle continue sur la cellule suivant sans avoir besoin de fusionner.

    La fusion c'est le MMMAAAAAAAAALLLL !!!
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  14. #14
    Membre du Club Avatar de tequillaman
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 112
    Points : 64
    Points
    64
    Par défaut
    lol menhir
    Le soucis, c'est que je suis obligé d'avoir ces cellules fusionnées car c'est des cellules avec liste déroulantes qui a 4 choix différents possibles.
    j'ai des sous totaux à des endroits dans cette même colonne pour savoir combien j'en ai de chaque choix.
    Enfin bref, j'ai quand même réussi à résoudre ces problèmes de la manière suivante (tout bête).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Intersect(Target, Range("AH7:AH113")) Is Nothing Then Exit Sub
        If Cells(Target.Row, 2) = "" Then
            If ActiveCell.Value <> "" Then Target = ""
            MsgBox "merci de remplir le poids de la billette " & Cells(Target.Row, 1)
            End If
    End Sub
    Le seul petit mini truc qui me chagrine c'est que j'ai mon msgbox quand je selectionne alors que la colonne b est vide BIEN
    la macro efface ensuite le contenu BIEN
    le msgbox reviens PAS BIEN
    Je le valide et c'est bon
    Je voudrais juste qu'il ne revienne pas.

    Et je n'ai plus la boucle de la mort quand j'efface mouhahahaha

    ps:
    pourrais-tu m'expliquer menhir stp dans se code que tu m'avais fait où il fait mention de ma colonne b
    je suppose que c'est dans cette ligne mais je ne la comprends pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(Target.Row, 2) = "" Then
    je préférerais comprendre pour ne pas avoir à me retrouver de nouveau coincé alors que j'ai la solution

  15. #15
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Bonjour,

    Oui c'est bien ça: Cells(i,j) correspond à la cellule en ligne i, colonne j.
    Donc ici ça pointe sur la même ligne que la cellule sélectionnée mais en colonne 2 (donc colonne B).

  16. #16
    Membre du Club Avatar de tequillaman
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 112
    Points : 64
    Points
    64
    Par défaut
    Merki everybody

  17. #17
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Pour empêcher la macro de revenir une 2e fois, ceci devrait aider (sans tester...)
    Le fait de mettre la cellule = "" occasionne un changement qui rappelle la macro _Change()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Intersect(Target, Range("AH7:AH113")) Is Nothing Then Exit Sub
     
        Application.EnableEvents = False
        If Cells(Target.Row, 2) = "" Then
            If Target <> "" Then Target = ""
            MsgBox "merci de remplir le poids de la billette " & Cells(Target.Row, 1)
        End If
        Application.EnableEvents = True
    End Sub
    MPi²

  18. #18
    Membre du Club Avatar de tequillaman
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 112
    Points : 64
    Points
    64
    Par défaut
    Salut parmi,
    Merci pour se petit complément. effectivement je n'ai plus la redondance du msgbox mais erreur d’exécution quand j'efface les données d'une ligne.
    Sa ne me le fait plus si je modifie comme sa.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Intersect(Target, Range("AH7:AH113")) Is Nothing Then Exit Sub 'verifie s'il y a des modifications dans la plage nommée
        Application.EnableEvents = False
        If Cells(Target.Row, 2) = "" Then  'si cellule de la même ligne de la colonne B est vide
            If ActiveCell.Value <> "" Then Target = ""  'efface la cellule
            MsgBox "merci de remplir le poids de la billette " & Cells(Target.Row, 1)  'message box
            End If
        Application.EnableEvents = True
    End Sub

    Merci en tout cas pour votre aide.
    Je vous solliciterais très rapidement je pense car je doit faire une recherche de fichier dans des sous dossiers de sous dossiers sans connaitre leur nom pour ouvrir un fichier, ... et je galère.

    L'apprentissage est long

  19. #19
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Ajoute ceci en début de procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Cells.Count > 1 Then Exit Sub
    MPi²

  20. #20
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 72
    Points : 149
    Points
    149
    Par défaut
    Et je rajouterais à Parmi qui a raison:
    Qu'il faut absolument garder Target et non mettre ActiveCell

    ex : La personne remplit B7 puis clique sur entrée ou sur une autre case, on va dire A1 pour en sortir.
    - Target sera "B7" donc la macro s'effectuera
    - Mais ActiveCell sera "A1"
    - Donc la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ActiveCell.Value <> "" Then Target = ""  'efface la cellule
    vérifiera si "A1" est vide pour vider ou non "B7" ce qui n'est pas l'objectif recherché.

    Donc au mieux ta macro ne fonctionnera pas sous certaines conditions, au pire tu auras des pertes de données.

    En espérant avoir été clair.

    DeathZarakai.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Contrôle de saisie formulaire
    Par miram dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/02/2006, 08h33
  2. contrôle de saisie sur un espace
    Par oceane751 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/01/2006, 12h04
  3. contrôle de saisie menu déroulant
    Par shnouf dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 05/01/2006, 16h30
  4. contrôle de saisie
    Par oceane751 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/01/2006, 11h24
  5. [debutant] contrôle de saisie et formulaire
    Par oceane751 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/11/2005, 22h29

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