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 :

Msgbox suite à une écriture d'un mot spécifique [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Technicien laboratoire
    Inscrit en
    Octobre 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien laboratoire
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2019
    Messages : 7
    Par défaut Msgbox suite à une écriture d'un mot spécifique
    Bonjour,

    Je tâtonne un peu sur VBA depuis peu et j'ai pour "mission" de faire apparaitre une msgbox à chaque fois qu'un mot spécifique est entré dans un planning (le mot peut se retrouver au milieu d'une phrase). J'ai essayé diverses solutions à base de Instr etc sans succès (au mieux j'ai eu une msgbox qui s'ouvrait en boucle). Etant technicien de laboratoire, je n'ai pas vraiment de formation en prog avec VBA à part internet et ce site magique

    En gros je voudrais qu'en rajoutant "motatester" dans une case du planning (donc une plage de donnée allant de A1 à H50) seul ou dans une phrase, qu'une msgbox s'affiche et que l'on puisse la fermer sans qu'elle ne se réouvre sauf si "motatester" est entré de nouveau.

    Ce projet est il possible? Serait il possible d'avoir une trame dégrossie que je pourrai affiner par moi même? (j'aime bien me débrouiller seul mais la je sèche).

    Merci et bonne journée !

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,
    Citation Envoyé par fekapic Voir le message
    Ce projet est il possible? Serait il possible d'avoir une trame dégrossie que je pourrai affiner par moi même?
    Avec ce début de code mis dans la feuille concernée tu devrais pouvoir te débrouiller
    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 Target.Count > 1 Then Exit Sub
        If Not Intersect(Target, Range("A1:H50")) Is Nothing Then
            If InStr(Target.Value, "motatester") > 0 Then MsgBox "c'est saisi !"
        End If
    End Sub

  3. #3
    Expert éminent 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
    Par défaut
    Citation Envoyé par fekapic Voir le message
    J'ai essayé diverses solutions à base de Instr etc sans succès
    Peut-être pourrais-tu présenter le code que tu as tenté pour qu'il soit possible de t'indiquer quelles erreurs tu as commises.

    je n'ai pas vraiment de formation en prog avec VBA
    Comme l'écrasante majorités de ceux qui utilisent le VBA (participants à ce forum compris).

    En gros je voudrais qu'en rajoutant "motatester" dans une case du planning (donc une plage de donnée allant de A1 à H50) seul ou dans une phrase, qu'une msgbox s'affiche et que l'on puisse la fermer sans qu'elle ne se réouvre sauf si "motatester" est entré de nouveau.
    Dans une macro évènementielle Worksheet_Change, tu commences par vérifier que la cellule saisie est dans la zone souhaitée en utilisant Intersect.
    Ensuite, tu fais un test sur sa valeur avec un InStr(). Si cette fonction renvoie une valeur supérieure à 0, tu affiches ta MsgBox.
    Lire ça :
    https://msdn.microsoft.com/fr-fr/lib...5(v=office.15)
    https://docs.microsoft.com/fr-fr/off...tion.intersect
    https://docs.microsoft.com/fr-fr/off...else-statement
    https://docs.microsoft.com/fr-fr/off...instr-function

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Menhir Voir le message
    ... Dans une macro évènementielle Worksheet_Change, tu commences par vérifier que la cellule saisie est dans la zone souhaitée en utilisant Intersect ...
    Etant moins doué que Menhir j'utilise pas Intersect (par méconnassance j'avoue )

    par contre j'utilise Target.row et Target.column (Target représentant la cellule dont la valeur a été changée perso je trouve cela plus représentatif

    Donc deux façon de faire

    Citation Envoyé par Menhir Voir le message
    ...
    Ensuite, tu fais un test sur sa valeur avec un InStr(). Si cette fonction renvoie une valeur supérieure à 0, tu affiches ta MsgBox.
    Lire ça :
    https://msdn.microsoft.com/fr-fr/lib...5(v=office.15)
    https://docs.microsoft.com/fr-fr/off...tion.intersect
    https://docs.microsoft.com/fr-fr/off...else-statement
    https://docs.microsoft.com/fr-fr/off...instr-function
    Bon j'irai voir ton deuxième lien Menhir

    Sinon n'oublie pas de faire F1 car il y a plein d'info dans l'aide en ligne

  5. #5
    Expert éminent 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
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    Etant moins doué que Menhir j'utilise pas Intersect (par méconnassance j'avoue )
    C'est comme beaucoup d'autres choses : il suffit de l'avoir fait une fois pour comprendre le truc.

    En gros, Intersect renvoie la zone commune des zones spécifiée dans ses paramètres.
    Si elle renvoie Nothing, c'est qu'il n'y a rien de commune.

    Donc, si on met comme paramètres Target et la zone souhaitée, un résultat Nothing indique que Target n'est pas dans la zone souhaitée.

  6. #6
    Membre habitué
    Homme Profil pro
    Technicien laboratoire
    Inscrit en
    Octobre 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien laboratoire
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2019
    Messages : 7
    Par défaut
    Bonjour,

    Ca fonctionne à merveille, je vais maintenant approfondir les fonctions target.count etc pour bien comprendre mais merci

    Bonne journée

  7. #7
    Expert éminent 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
    Par défaut
    Citation Envoyé par fekapic Voir le message
    je vais maintenant approfondir les fonctions target.count etc pour bien comprendre
    Tu ne trouveras pas Target dans l'aide.
    Ici, c'est le nom d'une variable (tu pourrais le remplacer par n'importe quel autre nom si tu le souhaites).
    Il faut plutôt chercher Range > Count. C'est une propriété qui compte le nombre de cellules d'une zone (Range).
    https://msdn.microsoft.com/fr-fr/lib...9(v=office.15)

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

Discussions similaires

  1. [XL-2007] Recherche d'une valeur ou mot spécifique dans une feuille
    Par XceSs dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/08/2011, 18h51
  2. Réponses: 5
    Dernier message: 22/11/2010, 17h39
  3. [E-01] Comment sauter une condition suite à une réponse de msgbox ?
    Par peofofo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/01/2009, 16h46
  4. Spliter une valeur selon des mots spécifiques
    Par witch dans le forum Langage
    Réponses: 15
    Dernier message: 03/10/2008, 11h10
  5. Réponses: 4
    Dernier message: 27/11/2006, 14h51

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