Création d'un bouton de validation

Bonjour,

C'est la première fois que je poste une question, je suis toute nouvelle.
J'ai un formulaire que j'ai créé. Quand je fais un enregistrement, la ligne vient s'insérer directement dans mon tableau et la date de saisie (date du jour) se met automatiquement en rouge pour prévenir la personne qu'il y a un tout nouveau enregistrement à valider. Je voudrais donc créer un bouton qui passerai ma date en noir une fois que la personne aura valider la saisie. Comment je peux faire ? A moins que vous ayez une autre idée je suis preneuse. Je ne suis pas très experte encore sur EXCEL.

Merci infiniment de l'aide que vous pourrez m'apporter et bon courage.

Santa

bonjour,

Voir ma contribution en Messagerie privée (en haut à droite)

A+

Salut

Dans un premier temps supprimes la mise en forme conditionnelle de la colonne [Date d'enregistrement] qui n'a pas lieu d'être si tu as un bouton de validation. Les données de la colonne A sont aussi à supprimer.

Dans un deuxième temps tu ajoutes une colonne au tableau en fin de tableau par exemple que tu nommes [Validé]. ton bouton Validé n'auras qu'un seul effet inscrire le fait que la ligne est validée. Dans la colonne [Validé] tu ajoute deux mise en forme conditionnelles comme ceci Pour le Rouge =$AQ3=FAUX pour le noir barré =$AQ3=VRAI.

image

Il ne te reste plus qu'a renseigner le code du bouton Validation...

Dans ton module 2 tu colles les deux Fonctions ci-dessous

' // Validation By Jean-Paul (Valtrase) le : 17/01/2022
' // Valide la saisi d'un contrat
Sub Validation()
    Dim lstO As ListObject
    Dim lstR As ListRow
    Dim strMessageTemp As String

    Set lstO = Range("tTableau").ListObject
    Set lstR = GetRowA("False", "Ttableau", "Validé")      ' // Renvoie une ListRow si une valeur FAUX à été trouvé dans la colonne "Validé"

    If Not lstR Is Nothing Then                            ' // Si l'on a bien trouvé la valeur
        lstR.Range.Select                                  ' // On sélectionne la ligne du tableau
        strTitle = Split(ThisWorkbook.Name, ".")(0) & " - Validation de contrat -"
        strMessageTemp = "Vérifier que la ligne sélectionnée est bien une ligne qui doit être validée." & vbNewLine & _
                         "Choissiser Oui pour confirmer la validation." & vbNewLine & _
                         "Choisisser Non pour annuler la saisie."

        Select Case MsgBox(strMessageTemp, vbQuestion Or vbYesNo Or vbDefaultButton2, strTitle)
            Case VbMsgBoxResult.vbYes
                lstR.Range(lstO.ListColumns("Validé").Index).Value = True    ' // Si validé alors on pas a True la colonne Validé
                lstO.DataBodyRange.Range("A1").Select

            Case VbMsgBoxResult.vbNo
                GoTo Validation_Exit
            Case Else
        End Select

    Else
        MsgBox "Aucun contrat à valider n'a été trouvé"
    End If

Validation_Exit:
    ' // On libère la mémoire
    If Not lstR Is Nothing Then Set lstR = Nothing
    If Not lstO Is Nothing Then Set lstO = Nothing

End Sub

' // getRowA By Jean-Paul (Valtrase) le : 16/01/2022
' // Récupère une ligne d'un tableau pour un ID déterminé
' // PosisitionRow = GetRowA(12,"Tableau1", "ID")
Public Function GetRowA(lngId, TableauName As String, ColumnName As String) As ListRow
  Dim Row
  Row = Evaluate("MATCH(" & lngId & "," & TableauName & "[" & ColumnName & "],0)")
  If Not IsError(Row) Then
    Set GetRowA = Range(TableauName).ListObject.ListRows(Row)
  End If
End Function

Voilà tu n'a plus qu'a faire pointer le Label Validation sur la bonne Macro. Click droit affecter une macro et sélectionner "Validation" dans la liste.

Si tu as d'autres question....

Bonsoir,

C'est super l'idée me convient bien.

Par contre, au lieu de mettre "VRAI" ou "FAUX" dans la colonne AQ je l'ai basculé en A1 du coup le bouton ne valide pas ce qui est normal. J'ai beau regarder dans le programme je ne vois pas ou changer c'est beaucoup trop compliqué pour moi. J'aimerai savoir comment faire svp ?

De plus, j'aimerai que le "VRAI" ou "FAUX" se mettent directement quand on a fini de saisir dans le formulaire et qu'on fait enregistré il se mette "FAUX" automatiquement pour que la responsable voit quand c'est en rouge que ce sont les dossiers qu'ils lui restent à valider et que les grisés barrés sont déjà validé. J'espère être claire dans mes propos !

Merci beaucoup pour votre retour et bonne soirée.

Je joins le dossier

Bonjour,

Bonjour,

Vous devez redimensionner le tableau pour qu'il englobe la colonne "A"

Pour le reste je regarde cela demain si j'ai deux minutes.

Bonjour,

Merci pour votre retour, c'est fait j'ai intégré ma colonne A dans mon tableau.

Bonne journée à vous

Bonjour Jan-Paul,

Je reviens vers vous pour vous demander de l'aide sur la programmation que vous m'avez faites.

Je souhaiterai qu'a la place de "VRAI" ou "FAUX" dans ma colonne Validé il y est "Validé" et A validé" car pour ma responsable vrai ou faux ne lui parle pas.

Sinon tout fonctionne super bien avec le programme que vous m'avez fait avec la fonction "Vrai" ou "Faux".

Je vous joins mon tableau ou les modifs Validé et A valider sont faites. Ma MEC fonctionne bien sauf que j'ai un message d'erreur quand je veux valider avec le bouton il me met MsgBox "Aucun contrat à valider n'a été trouvé" ce qui est normal car ce n'est pas le bon texte.

Merci énormément de votre retour et je vous souhaite une bonne journée.

Bonjour,

J'ai fait quelques changements notamment sur la sub enregistrer, qu'il faut vérifier vu le nombre d'enregistrements.

Bonsoir,

Merci vraiment de votre intervention je ne voyais pas comment résoudre ce problème? Je vais regarder le Sub Enregistré.

Bonne soirée à vous et encore merci

Bonsoir,

Je viens de voir le travail énorme que vous avez fait et modifié dans mon VBA et vraiment je vous en remercie.

Je n'avais pas tout regardé l'autre jour et aujourd'hui en regardant les mises à jour que vous avez faites c'est impressionnant.

C'est super gentil.

Je tenais vraiment à vous remercier

Bonne soirée à vous

Bonjour,

Merci cela fait toujours plaisir d'avoir de bon retour, c'est notre rémunération à nous les bénévoles.

Bonjour Jean-Paul,

En travaillant sur mon tableau, il me reste une petite requête à te demander.

Je voudrais que, quand je clic sur le bouton "Validation", il me valide la ligne que je choisi et non pas la première ligne comme il fait, parce que je veux que ce soit moi qui décide de la ligne qui sera à valider.

Peux-tu à nouveau m'aider stp ?

image

Sinon ton programme que j'ai recopier plus haut fonctionne très bien.

Merci pour ton retour si possible

Bonne journée

Cordialement

Salut,

Dans ce cas changes le code du bouton de validation par celui-ci

Sub Validation()
Dim lstO As ListObject
    Dim lstR As ListRow
    Dim strMessageTemp As String
    Dim Index

    Set lstO = Range("tTableau").ListObject
    '    Set lstR = TS_GetListRow(Range("tTableau").ListObject, "Validation", "A Valider")
    If Not Intersect(ActiveCell, Range("tTableau")) Is Nothing Then
        Index = Range("tTableau").ListObject.ListRows.Item(ActiveCell.Row - Range("ttableau").ListObject.HeaderRowRange.Row).Index
        Set lstR = lstO.ListRows(Index)
        lstR.Range.Select  ' // On sélectionne la ligne du tableau

        strTitle = Split(ThisWorkbook.Name, ".")(0) & " - Validation de contrat -"
        strMessageTemp = "Vérifier que la ligne sélectionnée est bien une ligne qui doit être validée." & vbNewLine & _
                         "Choissiser Oui pour confirmer la validation." & vbNewLine & _
                         "Choisisser Non pour annuler la saisie."

        If Not (Feuil6.CheckBox1) Then    ' // Pas de confirmation
            Select Case MsgBox(strMessageTemp, vbQuestion Or vbYesNo Or vbDefaultButton2, strTitle)
                Case VbMsgBoxResult.vbYes
                    lstR.Range(lstO.ListColumns("Validation").Index).Value = "Validé"  ' // Si validé alors on passe a True la colonne Validé
                    ' lstO.DataBodyRange.Range("A2").Select

                Case VbMsgBoxResult.vbNo
                    GoTo Validation_Exit
                Case Else
            End Select
        Else
            lstR.Range(lstO.ListColumns("Validation").Index).Value = "Validé" ' // Si validé alors on pas a True la colonne Validé

        End If
    Else
        MsgBox "Oupss la cellule sélectionée ne fait pas partie du tableau. " & vbCrLf _
             & "" & vbCrLf _
             & "La procédure va être abandonnée.", vbOKOnly Or vbInformation, Application.Name

    End If

Validation_Exit:
    ' // On libère la mémoire
    If Not lstR Is Nothing Then Set lstR = Nothing
    If Not lstO Is Nothing Then Set lstO = Nothing
End Sub

Du coup tu n'as plus besoin des fonctions TS_GetListRow et GetRowA

J'ai ajouter un ChekBox sur la feuille pour éviter les multiples confirmations.

yesss c'est super, trop fort comme d'hab ça marche

Tu mets dans ton message précédent qu'il faut penser à Access avant de penser des heures à coder. Penses-tu que j'aurai pu faire ce formulaire avec Acces que je ne connait pas du tout ?

Merci

Re,

Au vu de ton fichier je ne pense pas que cela soit nécessaire. En fait c'est pour tous les gens qui passe des heures à coder un simili de base de donnée sous Excel qui n'est pas prévu pour cela.
Avec Access si tu mets bien en forme les tables qui te sont nécessaire tu auras fait la moitié du travail

Quelques exemple de format dans table:

image

Ici le code postal du licencié.

image

si on décortique les propriétés :
Taille du champ Ici 5 sans rien de plus tu limites la taille des caractères que pourras entrer l'utilisateur.
Tu peux définir un format super non ? et un masque de saisie
Le label va correspondre au label qui sera afficher à gauche du contrôle (plus besoin d'ajouter un label)
Tu veux rendre la saisie obligatoire tu passes la propriété Null interdit sur Oui
Et ainsi de suite .....

Pour une entrée de courriel par exemple :

image

Je te laisse déchiffrer le Valide si...

Pour les recherches avec une requête c'est tout simple

image

Là encore je te laisse déchiffrer le critère...

Et pour un résultat saisie d'un numéro de téléphone par exemple

image

si je ne fini pas la saisie

image

Voilà le résultat final qui m'a pris environ 1h30 mn de confection (exemple dédié à un autre participant)

Je ne peux pas poster un fichier Access sur ce forum normal, mais je peux te l'envoyer par courriel

Bonsoir Jean Paul,

Merci pour toutes ces infos. ça à l'air super intéressant Access, je vais regarder ça.

Je veux bien, si ça ne te dérange pas, que tu m'envoi par courriel ce fichier Access, pour que je le décortique et faire des essais sur d'autres projets que j'ai.

En tout cas j'ai apprécié nos échanges de travail qui me donne l'envie de poursuivre. C'est la première fois que je fais du codage sur excel c'était difficile mais le résultat est là, je suis fière.

Bonne journée et merci encore.

Salut,

Je t'ai envoyé un message privé concernant cette discussion.

Salut,

Ok je n'avais pas vu. Pas encore habituée.

Merci

Rechercher des sujets similaires à "creation bouton validation"