Macro / module excel

Résolu
Bonjour à tous

Voilà je voudrais qu'un message apparait dans des cellule de classeur excel, mais je ne sais pas comment faire. voila mon problème.

J'ai fait une liste dans des cellules de B7 à B30(ex. CB;CBR;Chèque)
et je voudrai que quand je sélection Chèques un message m'indique qu'il faut inscrit un néméro de chèque dans la cellule (ex.C7). si quelqu'un a la solution je serai ravi. pour la programmation je suis très,très petit débutant. alors je vous demande de bien vouloir bien détailler les solution. je vous remerci.
Configuration: Xp familliale.
Excel 2000 pro.

8 réponses

  1. Bonjour,

    Une fois votre classeur ouvert, allez dans l'éditeur VBE.

    //Outils/Macro/Visual Basic Editor

    À gauche, la fenêtre des projets devrait être ouverte, sinon

    //Affichage/ Explorateur de Projet

    Pointer/Ouvrir le nom de votre classeur

    Repérer le nom de la feuille et effectuer un double clic

    Copier/coller le code suivant :

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        
        Dim CelluleVise As Range
        Dim Reponse As Variant
        Dim NumCheque As Integer
        Dim Question As String
        Dim Titre As String
        
        Set CelluleVise = Application.Intersect(Target, Range("B7:B30"))
        
        If CelluleVise Is Nothing Then
            'MsgBox "La cellule n'est pas dans l'intersection"
            DoEvents
        Else
            'MsgBox "La cellule est dans l'intersection"
            DoEvents
            Question = "Entrer un numéro de chèque s.v.p."
            Titre = "Saisie du numéro de chèque"
            Reponse = InputBox(Question, Titre, "100")
            'Est-ce un nombre ? et est-il plus grand que 99
            If ((Val(Reponse) <> 0) And (Val(Reponse) > 99)) Then
                ActiveCell.Offset(0, 1).Value = NumCheque
            End If
        End If
    
    End Sub
    
    


    Lupin
    1. re:

      J'ai oublié de renommer une variable !

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
          
          Dim CelluleVise As Range
          Dim Reponse As Variant
          Dim Question As String
          Dim Titre As String
          
          Set CelluleVise = Application.Intersect(Target, Range("B7:B30"))
          
          If CelluleVise Is Nothing Then
              'MsgBox "La cellule n'est pas dans l'intersection"
              DoEvents
          Else
              'MsgBox "La cellule est dans l'intersection"
              DoEvents
              Question = "Entrer un numéro de chèque s.v.p."
              Titre = "Saisie du numéro de chèque"
              Reponse = InputBox(Question, Titre, "100")
              'Est-ce un nombre ? et est-il plus grand que 99
              If ((Val(Reponse) <> 0) And (Val(Reponse) > 99)) Then
                  ActiveCell.Offset(0, 1).Value = Val(Reponse)
              End If
          End If
      
      End Sub
      


      Lupin
      1. salut Lupin

        je te remerci pour ton aide, le problème est résolu en grande partie, car je voudrais que lorsque je sélectionne Chèque dans ma liste là il voudrais que le message s'affiche mes pas quand je choisi CB ou CBR, j'espère que tu me comprend. Merci si tupeut m'aidé. A+
        "liste créer par donnée, validation, liste"
        1. re :

          Pour ce faire, il faut que tu me décrive mieux ta liste !

          Est-ce un plage de cellules, un cellule en particulier, une liste
          déroulante ?

          S'il s'agit d'une liste déroulante, est-elle sur un feuille, sur un
          "userform"

          dis m'en plus !

          Lupin
          1. salut LUPIN

            voilà je suis entrain de me faire un compte bancaire a ma façon,
            alors je vais essayer de m'expliquer.

            Voilà dans excel j'ai nommé mes colonnes ainsi "A Date,B Titre,C N° Chèque,D destinataire,E Catégorie, F SCatégorie,G Débit,H Solde". Voilà pour mes colonnes. Dans la colonne "B Titre" j'ai fais un liste déroulant par l'intermédiaire de {donnée,validation,liste et j'ai inscri CB;CBR;Chèque,RemChèque,Virement,etc}pour une cellule et j'ai fait un coller/copier pour les autres cellules. Je voudrais que quand je déroule cette liste et que je choisi "Chèque" qu'un message m'indique qu'il faut inscrire un N° Chèque dans la cellule colone C [ex.colonne B 7 =si sélectionne Chèque , inscrire Colonne C7 N° Chèque et ainsi de suite B8 si sélection Chèque inscrire Colone C8 N° Chèque].

            J'espère que je me suis bien expliqué .

            Merci pour ton aide.

            A+

            Si tu me donne ton E-Mail je t'envoi mon classeur SI TU VEUX.
            1. resalut LUPIN

              j'ai oublier de te dire que pour le N° chèque si c'est possible il voudrais qu'il soit accompagné de 2 lettres 1000000 AA ou 1200000 BC

              SI POSSIBLE CAR JUSTE LE N° SUFFIRA ." les lettres c'est un extra si ont peut dire car tous les Chèques de banque ne termine pas des lettres"

              MERCI. A+
              1. re :

                Voici donc deux possibilités :

                1 er cas : Un simple numéro de chèque sans lettre

                Private Sub Worksheet_Change(ByVal Target As Range)
                
                    Dim CelluleVise As Range
                    Dim Reponse As Variant
                    Dim Question As String
                    Dim Titre As String
                    
                    Set CelluleVise = Application.Intersect(Target, Range("B7:B30"))
                    
                    If CelluleVise Is Nothing Then
                        'MsgBox "La cellule n'est pas dans l'intersection"
                        DoEvents
                    Else
                        'MsgBox "La cellule est dans l'intersection"
                        DoEvents
                        If (ActiveCell.FormulaR1C1 = "Chèque") Then
                            Question = "Entrer un numéro de chèque s.v.p."
                            Titre = "Saisie du numéro de chèque"
                            Reponse = InputBox(Question, Titre, "100")
                            'Est-ce un nombre ? et est-il plus grand que 99
                            If ((Val(Reponse) <> 0) And (Val(Reponse) > 99)) Then
                                ActiveCell.Offset(0, 1).Value = Val(Reponse)
                            End If
                        End If
                    End If
                
                End Sub
                


                2 e cas : Un numéro de chèque complexe

                Private Sub Worksheet_Change(ByVal Target As Range)
                
                    Dim CelluleVise As Range
                    Dim Reponse As Variant
                    Dim Question As String
                    Dim Titre As String
                    
                    Set CelluleVise = Application.Intersect(Target, Range("B7:B30"))
                    
                    If CelluleVise Is Nothing Then
                        'MsgBox "La cellule n'est pas dans l'intersection"
                        DoEvents
                    Else
                        'MsgBox "La cellule est dans l'intersection"
                        DoEvents
                        If (ActiveCell.FormulaR1C1 = "Chèque") Then
                            Question = "Entrer un numéro de chèque s.v.p."
                            Titre = "Saisie du numéro de chèque"
                            Reponse = InputBox(Question, Titre, "100 AB")
                            ActiveCell.Offset(0, 1).Value = Reponse
                        End If
                    End If
                
                End Sub
                


                Attention, tu remarqueras que l'évènement n'est pas le même
                que dans le message 2!

                Message 2 -> Évènement : Worksheet_SelectionChange(ByVal Target As Range)
                Ce message -> Évènement : Worksheet_Change(ByVal Target As Range)

                Lupin
                1. salut à toi ooooh grand LUPIN

                  Je tien remercié beaucoup pour l'aide que tu m'a apporté, tu fais mon bonheur. Merci mille fois, car s'en toi je n'aurai pas pu evoluer dans ma base.

                  Merci A+