Routine de contrôle en VBA

Bonjour,

je débute dans VBA , j'ai un petit souci

je veux créer une routine que me controlera le N° de la sécu sociale:

exp :
dans cellule A1 :
VALEUR 1 pour le sexe Masculin
VALEUR 2 pour le sexe Féminin

Dans Cellule A2:
Année de naissance ( 81)

Dans Cellule A3:
Mois de naissance ( 06)

Dans Cellule A4:
Département de naissance ( 75)

Je désire si je saisisse dans A9 : le N° de la sécurité sociale , la routine ou la fonction extrait lesdonnées dedifférentes cellules et compare les 2 valeur si c'est faux , une boîte de dialogue s'affiche et que les valeurs de A1+ A2+A3 et A4 s'affichent dans A10

Merci d'avance
Configuration: Windows Vista
Internet Explorer 7.0

4 réponses

  1. Contributeur
    Dans le module de la feuille tu copie..
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim R As Long, V1 As String, V2 As String, V3 As String
    Dim V4 As String
        For R = 1 To 4
            If Cells(R, 1).Value = "" Then Exit Sub
        Next R
        V3 = "0" & Cells(3, 1).Value
        V4 = "0" & Cells(2, 1).Value 'pour les année 2001,2002 etc..
        V1 = Cells(1, 1).Value & Right(V4, 2) & Right(V3, 2) & Cells(4, 1).Value
        V2 = Left(Cells(9, 1).Value, 7) 'ce qui est dans A9
        If V1 = V2 Then
            MsgBox "Le numéro en A9=" & V2 & " il est correct", vbOKOnly, "Contrôle"
        Else
            MsgBox "Le numéro en A9 n'est pas correct" & Chr$(13) _
            & "Ce doit être " & V1, vbOKOnly, "Contrôle"
        End If
    End Sub


    ensuite.. tu rentre les données comme dans ton premier poste
    dans A9.. '285059100000000 avec l'apostrophe
    ensuite
    Dans A1 .. 2 - A2.. 85 - A3.. 6 - A4.. 91
    et après behh.. tu modifie une donnée pour voir.
    J'espère que cette fois ca répond à ton problème :D
    A+
    1. Contributeur
      Bonjour,
      la sub... Private Sub TEST_SECU_Click() est liée à l'événement clic d'un contrôle OptionButton.
      Dim ne renvoi rien, il sert à la déclaration de variable (pour que VBA sache quel genre de variable elle contiendra)

      cogite déja un peu sur...
      Sub TesterNumero()
      Dim R As Long, V1 As String, V2 As String, V3 As String
      Dim V4 As String
          Sheets("Feuil1").Select 'a adapter au nom de la feuille
          R = 1 'savoir sur quel ligne travailler
          V3 = "0" & Cells(R, 3).Value
          V4 = "0" & Cells(R, 2).Value 'pour les année 2001,2002 etc..
          V1 = Cells(R, 1).Value & Right(V4, 2) & Right(V3, 2) & Cells(R, 4).Value
          V2 = Left(Cells(9, 1).Value, 8) 'ce qui est dans A9
          
      End Sub

      A+
      1. Bonsoir :

        dans cellule A1 :
        1 pour le sexe Masculin
        2 pour le sexe Féminin

        Dans Cellule A2:
        Année de naissance ( 81)

        Dans Cellule A3:
        Mois de naissance ( 06)

        mois de naissance de juin

        Mid (cellA3,1,2) = 6
        le souci pour les mois de naissance de Janvier à septembre c'est qu'elle me renvoit un seul chiffre
        alors il me faut qu'elle me renvoit 06

        Dans Cellule A4:
        Département de naissance ( 75)

        Je désire si je saisisse dans A9 : le N° de la sécurité sociale , la routine ou la fonction extrait lesdonnées dedifférentes cellules et compare les 2 valeur si c'est faux , une boîte de dialogue s'affiche et que les valeurs de A1+ A2+A3 et A4 s'affichent dans A10

        pour vous R ça represente quoi ?

        Merci d'avance
    2. c'est facile si c'est vous qui la réaliser.
      tu crois qu'il ne presente pas d'erreur d'après ce qu vous avez écrit
      1. Rebonjour,

        le souci c'est lorsque le mois de naissance est de janvier à septembre
        Dim me renvoie seulement un chiffre de 1 à 9 alors que j'ai besoin qu'il m'affiche : 01 à 09

        Exp :
        une femme
        Date de naissance: 09/05/1985
        Departiment de naissance : 91

        N° sécurité sociale : 285059100000000

        V1: 285591
        V2:2850591
      2. @Chrif/71utiliser l'instruction format(date, jjjj/mmmm/aaaa)
      3. @Chrif/71j'ai duy quitter,
        pour votre réponse utliser la fonction Format$(Date, " dd mmmmyyyy")
        affecter cette fonction à la cellule qui reçoi la date
        et la Date qui est dans la fonction remplacer par la cellule qui contient la date
      4. @Archi-dessinBonsoir ,

        la cellule qui reçoit la date ( Format, date , ddmmyy)

        ça marche pas

        Je pense que j'ai pas bien compris ce que vous voulez dire

        Merci d'avance
    3. vous etes etudiant
      1. Bonjour,

        je suis un salarié ,

        j'ai besoin de cette routine pour faire des maquettes afin de me faciliter le travail
      2. Bonjour,

        je suis un salarié ,

        j'ai besoin de cette routine pour faire des maquettes afin de me faciliter le travail

        Merci de votre aide
      3. Bonjour,

        je suis un salarié ,

        j'ai besoin de cette routine pour faire des maquettes afin de me faciliter le travail

        Merci de votre aide
      4. @Chrif/71est ce que vous connaissez la logique de programmation
      5. @Archi-dessinoui un peu

        j'ai cherché sur internet et j'ai ecris un code mais il marche pas :

        Private Sub TEST_SECU_Click()
        Dim V1 As String
        Dim V2 As String

        V1 = Mid(cells(13, 12).Value, 1, 2) & Mid(cells(15, 1).Value, 1, 2) & Mid(cells(9, 12).Value, 1, 2) & Mid(cells(14, 12).Value, 1, 2)
        V2 = Mid(cells(16, 3).Value, 1, 8)
        If TEST_SECU.Value = True And V1 <> V2 Then
        MsgBox " N° sécurité Sociale FAUX", vbCritical, "ERREUR"
        cells(16, 3).Value = Mid(cells(13, 12).Value, 1, 2) & Mid(cells(15, 12).Value, 1, 2) & Mid(cells(9, 12).Value, 1, 1) & Mid(cells(14, 12).Value, 1, 2)
        cells(17, 12).Value = Mid(cells(9, 12).Value, 1, 3)
        End If
        End Sub