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 :

Obliger l'utilisateur à quitter une cellule avant de continuer !


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut Obliger l'utilisateur à quitter une cellule avant de continuer !
    Bonjour,

    J'ai une cellule pouvant contenir une heure, exemple 12h00

    Lorsque je quitte cette cellule, cela lance du code VBA pour certaines vérifications; comme un changement de couleur si les conditions ne sont pas respectées et ensuite je clique sur un bouton pour imprimer.

    Mon problème est que beaucoup de personne entre l'heure, ne quitte pas la cellule et imprime, ce qui à pour conséquence que les vérifications se font après...

    Est-il possible de dire pour une cellule précise, si tu ne quittes pas, si tu ne valides pas la cellule rien ne se passe...

    Ou comment tester si une cellule précise est sélectionnée ? (Focus...)

    Merci d'avance ;-)

  2. #2
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Bonjour,

    Tu devrais passer par une macro pour tester la cellule. Tu rajoutes ton test sur la cellule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook BeforePrint(Cancel As Boolean)
    MsgBox "Que nenni !"
    Cancel = True
    End Sub

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut
    Bonjour,

    Merci pour la réponse :-)

    Mais est-il possible d'utiliser ceci directement sur l'onglet ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_BeforePrint(Cancel As Boolean)
    MsgBox "Que nenni !"
    Cancel = True
    End Sub
    Et surtout comment mettre un test sur une cellule en particulier (AN8) dans mon cas ?

    Ps : Ce n'est pas forcement avant une impression ! C'est juste que j'aimerais obliger les utilisateurs à ne pas rester sur la cellule qu'il viennent d'encoder...

    Bien à toi

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    le plus simple, c'est de définir une cellule où doit être positionné le curseur par défaut, et faire débuter la procédure qui lance l'impression par une mécanique de ce type, par exemple (2 même, suivant le contexte) :

    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 iooi()
        If Not Intersect(ActiveCell, Range("A1")) Is Nothing Then
            ' //////////
            ' exemple 1
            MsgBox "On est en A1, arrêt du processus"
            Exit Sub
            ' //////////
     
            ' //////////
            ' exemple 2 // activera la procédure évènementielle SelectionChange
            Range("B1").Select
            ' //////////
        End If
     
        ' Le Traitement d'impression
    End Sub
    En remplaçant A1 (cellule interdite) et B1 (cellule de sécurité) par tes propres agencements


    S'il y a plusieurs cellules à contrôler, les unir via application.Union pour utiliser cette plage dans le test Intersect, et adapter le comportement du bloc d'exécution au sein du If/End If
    Mais si tel était le cas, il deviendrait plus pertinent de créer une procédure dédiée à la vérification des saisies, voire même de l'éclater en plusieurs sous-procédures d'audit, que tu pourras plus facilement réutiliser dans ton projet ou mettre à jour

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut
    Merci :-)

  6. #6
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Bonjour,

    Tu pourrais exécuter un macro sur ta feuille toutes les x secondes : voir ici.
    Et forcer la validation : .

    Le plus simple serait de bien expliquer tout le processus à tes 'collaborateurs' et qu'ils prennent conscience que le système ne peut fonctionner correctement que s'ils fonctionnent aussi correctement.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 11/10/2023, 17h14
  2. Réponses: 4
    Dernier message: 20/11/2014, 20h58
  3. [LibreOffice][Tableur] Obliger l'utilisateur à renseigner leur nom avant de quitter ! !
    Par Mr Gue dans le forum OpenOffice & LibreOffice
    Réponses: 4
    Dernier message: 12/05/2013, 07h35
  4. Réponses: 2
    Dernier message: 05/02/2013, 15h14
  5. Inno setup: obliger l'utilisateur à redémarrer son PC avant de réinstaller
    Par alora dans le forum Installation, Déploiement et Sécurité
    Réponses: 0
    Dernier message: 25/10/2007, 18h49

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