Contrôle des saisies de l'utilisateur

Résolu/Fermé
zikey Messages postés 116 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 14 mai 2016 - 8 juil. 2015 à 20:26
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 - 29 juil. 2015 à 09:13
Bonsoir,
A la fin du déroulement d'une procédure, je demande à l'utilisateur de saisir des valeurs dans certaines cellules.
Après saisie, le clic sur un bouton de commande déclenche la procédure suivante.
Cependant je voudrais faire un contrôle sur les valeurs saisies et si besoin de demander une nouvelle saisie.
Eventuellement je pourrai afficher les zones de procédure concernées.
Merci d'avance
Cordialement


48 réponses

Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
8 juil. 2015 à 23:01
Bonjour,
Un peu léger comme explication, pourquoi ne pas passer par un formulaire à remplir et une fois rempli et contrôlé vous renseignez les cellules adéquates !

0
zikey Messages postés 116 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 14 mai 2016
Modifié par Whismeril le 11/07/2015 à 07:48
Merci pour vos réponses,
Je m'adresse à "Le Pingou"
En effet je suis toujours dans la même procédure que vous m'avez, aimablement, écrite.
A la fin de la macro "Bilan_du_centre" l'utilisateur, après avoir rempli des cellules du fichier, doit cliquer sur le bouton "Bilan du centre" pour déclencher la macro "envoi_et_impression_bilan".
Cependant je voudrais vérifier les valeurs entrées et obliger à faire les corrections.
Je joins les 2 parties de procédure
'15)    Message pour la saisie dans les cases jaunes.

                    Dim vRéponse1 As String
                    vRéponse1 = MsgBox("POUR UTILISER LES CASES JAUNES AFIN DE NOTER VOS MODIFICATIONS ET VOS DEMANDES" & Chr(10) & _
                    "POUR BEBES PAS PLUS DE PRODUITS COMMANDES QUE DE PRODUITS PROPOSES" & Chr(10) & _
                    " CLIQUEZ SUR LE BONTON OK" & Chr(10) & _
                    "APRES AVOIR INSCRIT VOS MODIFICATIONS ET DEMANDES CLIQUER SUR LE BOUTON" & Chr(10) & _
                    "BILAN DE LA SEMAINE", vbOKOnly, "OUVREZ BIEN LES YEUX")
'16)    Vérification des quantités de produits pour Bébés.

                    Dim Alimproposée As String
                    Dim Alimcommandée As String
                    Dim Coucheproposée As String
                    Dim Couchecommandée As String
                    Alimproposée = Range("S23").Value + Range("S24").Value + Range("S25").Value _
                    + Range("S26").Value
                    Alimcommandée = Range("T23").Value + Range("T24").Value + Range("T25").Value _
                    + Range("T26").Value
                    Coucheproposée = Range("S28").Value + Range("S29").Value + Range("S30").Value _
                    + Range("S31").Value
                    Couchecommandée = Range("T28").Value + Range("T29").Value + Range("T30").Value _
                    + Range("T31").Value
                    
                            If Alimcommandée <= Alimproposée Then
                                    If Couchecommandée <= Couchecalculée Then
                                            GoTo 5
                                    Else
                                            vRépons10 = MsgBox _
                                            ("LA QUANTITE DE COUCHES COMMANDEE EST SUPERIEURE A CELLE PROPOSEE" _
                                            & Chr(10) & "VERIFIER AUSSI LA QUANTITE DE NOURRITURE" _
                                            & Chr(10) & "FAIRE LES CORRECTIONS", vbOKOnly, "VALEURS ERRONNEES")
                                            'GoTo 6
                                    End If
                            Else
                                    vRépons11 = MsgBox _
                                    ("LA QUANTITE DE NOURRITURE COMMANDEE EST SUPERIEURE A CELLE PROPOSEE" _
                                    & Chr(10) & "FAIRE LES CORRECTIONS", vbOKOnly, "VALEURS ERRONNEES")
                                    'GoTo 6
                            End If
                                            
5
                    
'16)   Affichage du bouton "BILAN DU CENTRE"

                    'Sheets("Bilan du centre").Select
                    ActiveSheet.Unprotect Password:="sotser"
                    ActiveSheet.Shapes("Bouton 8").Visible = True


EDIT: Correction de la coloration syntaxique.
0
zikey Messages postés 116 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 14 mai 2016
9 juil. 2015 à 08:03
Pardon, je n'ai pas su mettre à la suite la deuxième partie
Je la renvoie en précisant qu'elle n'est pas terminée, je ne sais pas comment faire
Cordialement
'16)    Vérification des quantités de produits pour Bébés.

                    Dim Alimproposée As String
                    Dim Alimcommandée As String
                    Dim Coucheproposée As String
                    Dim Couchecommandée As String
                    Alimproposée = Range("S23").Value + Range("S24").Value + Range("S25").Value _
                    + Range("S26").Value
                    Alimcommandée = Range("T23").Value + Range("T24").Value + Range("T25").Value _
                    + Range("T26").Value
                    Coucheproposée = Range("S28").Value + Range("S29").Value + Range("S30").Value _
                    + Range("S31").Value
                    Couchecommandée = Range("T28").Value + Range("T29").Value + Range("T30").Value _
                    + Range("T31").Value
                    
                            If Alimcommandée <= Alimproposée Then
                                    If Couchecommandée <= Couchecalculée Then
                                            GoTo 5
                                    Else
                                            vRépons10 = MsgBox _
                                            ("LA QUANTITE DE COUCHES COMMANDEE EST SUPERIEURE A CELLE PROPOSEE" _
                                            & Chr(10) & "VERIFIER AUSSI LA QUANTITE DE NOURRITURE" _
                                            & Chr(10) & "FAIRE LES CORRECTIONS", vbOKOnly, "VALEURS ERRONNEES")
                                            'GoTo 6
                                    End If
                            Else
                                    vRépons11 = MsgBox _
                                    ("LA QUANTITE DE NOURRITURE COMMANDEE EST SUPERIEURE A CELLE PROPOSEE" _
                                    & Chr(10) & "FAIRE LES CORRECTIONS", vbOKOnly, "VALEURS ERRONNEES")
                                    'GoTo 6
                            End If
                                            
5
                    
'16)   Affichage du bouton "BILAN DU CENTRE"

                    'Sheets("Bilan du centre").Select
                    ActiveSheet.Unprotect Password:="sotser"
                    ActiveSheet.Shapes("Bouton 8").Visible = True
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
Modifié par Le Pingou le 9/07/2015 à 13:57
Bonjour,
Merci pour l'information.
Je vais regarder le détail dans la soirée, patience.
Note: prendre le message de Raymond (salutations) comme une petite gentillesse au passage.

Salutations.
Le Pingou
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
9 juil. 2015 à 17:00
Bonjour,
C'est du travail de capucin, sans connaitre le format des valeurs à traiter.
Merci de me fournir la feuille qui contient les diverses propositions ou le mieux mettre le classeur sur https://www.cjoint.com/ et poster le lien.
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
9 juil. 2015 à 22:14
Bonjour zikey,
Merci pour le classeur.
En marge j'ai constaté qu'il y a beaucoup de module vide (aucune procédure), je vous propose de les supprimé puisque inutile.
En fin de soirée votre code sera adapté, patience.

0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
9 juil. 2015 à 22:43
Bonjour,
Merci de me confirmer que les contrôles sont à effectuer dans la procédure [Bilan_de_la_semaine()]
Si OK alors : Affichage du bouton "BILAN DU CENTRE"
Si non alors faire corrections

0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
9 juil. 2015 à 23:02
Bonjour,
Votre contrôle me semble bizarre, les quantités maximum de 2, 3, 3, 7 et ensuite vous comparez avec le total soit 15 alors pour moi je commande 0, 0, 15,0 et c'est ok Oui / Non (donc peu importe l'attribution c'est le total qui compte)

0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
9 juil. 2015 à 23:37
Bonjour,
En attendant vos réponses, j'ai modifié la partie de procédure selon la version d'origine :
'16)    Vérification des quantités de produits pour Bébés.

Dim Alimproposée As Integer
Dim Alimcommandée As Integer
Dim Coucheproposée As Integer
Dim Couchecommandée As Integer

Alimproposée = WorksheetFunction.Sum(Range("S23:S26"))
Alimcommandée = WorksheetFunction.Sum(Range("T23:T26"))
Coucheproposée = WorksheetFunction.Sum(Range("S28:S31"))
Couchecommandée = WorksheetFunction.Sum(Range("T28:T31"))
                    
If Alimcommandée > Alimproposée Then
    vRépons11 = MsgBox("LA QUANTITE DE NOURRITURE COMMANDEE EST SUPERIEURE A CELLE PROPOSEE" _
                & Chr(10) & "FAIRE LES CORRECTIONS", vbOKOnly, "VALEURS ERRONNEES")
    Range("T23:T26").Activate
    Exit Sub
ElseIf Couchecommandée > Coucheproposée Then
    vRépons10 = MsgBox("LA QUANTITE DE COUCHES COMMANDEE EST SUPERIEURE A CELLE PROPOSEE" _
                & Chr(10) & "FAIRE LES CORRECTIONS", vbOKOnly, "VALEURS ERRONNEES")
    Range("T28:T31").Activate
    Exit Sub
End If

0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
10 juil. 2015 à 10:30
Bonjour,
Concerne cette instruction :
ActiveSheet.Shapes("Bouton 8").Visible = True

Ne correspond à aucun objet ....est-ce correct ?

0
zikey Messages postés 116 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 14 mai 2016
10 juil. 2015 à 10:47
Bonjour,
Ce sont bien les totaux qui sont comparés dans les 2 cas

Le "Bouton 8" nommé "Bilan du centre" est masqué à l'ouverture du fichier "Bénéficiaires hiver 15-16" et est activé pour lancer la macro "envoi_et_impression"
Ce bouton est situé dans la page "Bilan du centre"
Dans la macro Open il faut neutraliser la macro "Suivi_enfants"
Private Sub workbook_open()


'01)    Lancement de la macro de mise à jour à l'ouverture du fichier "Bénéficiaires hiver 15-16".

                    ouverture_présences
    
    
End Sub

Sub ouverture_présences()



' 02)   Mise à jour de la feuille "Suivi Enfants".

                    suivi_enfants
                    
                    
'03)    Masquage du bonton "BILAN DU CENTRE".

                    Sheets("Bilan du centre").Select
                    ActiveSheet.Unprotect Password:="sotser"
                    Range("T23").Select
                    Range("T23").Activate
                    ActiveSheet.Shapes("Bouton 8").Visible = False
                    ActiveSheet.Protect Password:="sotser", DrawingObjects:=True, Contents:=True, _
                    Scenarios:=True
                    
'04)    Sélection de la cellule J9

                    Sheets("Saisir les Présences").Select
                    Range("J9").Select
                    Range("J9").Activate
                   
                
End Sub

Sub suivi_enfants()


'05)    Déverrouillage de la feuille "Suivi Enfants".
 
                    Sheets("Suivi Enfants").Select
                    ActiveSheet.Unprotect Password:="sotser"
                    
                    
'06)    Suppression de la sélection de la semaine précédente.
                    
                    Range("E8:S8").Select
                    
                            With Selection.Font
                                    .ThemeColor = xlThemeColorLight1
                                    .TintAndShade = 0
                            End With
                            
                            With Selection.Interior
                                    .PatternColorIndex = xlAutomatic
                                    .ThemeColor = xlThemeColorDark1
                                    .TintAndShade = 0
                                    .PatternTintAndShade = 0
                            End With
                            
                            
'07)    Sélection de la semaine en cours.

                    For s = 5 To 19
                    
                            If Cells(8, s).Value = Range("Q3").Value Then
                                    Cells(8, s).Select
                                    
                                            With Selection.Font
                                                    .ThemeColor = xlThemeColorDark1
                                                    .TintAndShade = 0
                                            End With
                                    
                                            With Selection.Interior
                                                    .Pattern = xlSolid
                                                    .PatternColorIndex = xlAutomatic
                                                    .Color = 16737843
                                                    .TintAndShade = 0
                                                    .PatternTintAndShade = 0
                                            End With
                                    
                            End If
                        
                    Next
                    
                    
'08)    Sélection de la zone à traiter.
        
                    Rows("10:609").Select
                    Selection.EntireRow.Hidden = False
                    
                    
'09)    Masquage des lignes concernant des enfants de plus de 18 mois.
        
                    For n = 10 To 609
        
                        If Cells(n, 20) = 0 Or Cells(n, 20) >= 285 Then
                
                            Rows(n).Select
                            Selection.EntireRow.Hidden = True
                        
                        End If
                
                    Next
                    
                    
'10)    Verrouillage de la feuille "Suivi Enfants".
              
                    Range("A1").Activate
                    ActiveSheet.Protect Password:="sotser", DrawingObjects:=True, Contents:=True, _
                    Scenarios:=True

End Sub
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
10 juil. 2015 à 14:46
Bonjour,
Merci pour l'information.
Entre temps je l'avais trouvé.
Quand est-il de la proposition du message 11 .... ?

0
zikey Messages postés 116 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 14 mai 2016
10 juil. 2015 à 15:48
Bonjour,
Je viens d'intégrer la proposition 11 mais si j'entre des valeurs supérieures je n'ai pas de sortie de la macro.
En effet on va jusqu'à la fin de la macro et donc le bouton 8 est visible et on peut continuer avec la macro "envoi_et_impression_bilan"

Cordialement
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
10 juil. 2015 à 17:14
Bonjour,
Non ce n'est pas possible.
Vous devez avoir le message et la plage concernée sélectionnée et la macro est fermée.
Vous ne pouvez pas continuer sans correction même en via le bouton 8.
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
10 juil. 2015 à 17:31
Bonjour,
Eh bien je commence à comprendre ou le chat à mal à la patte.
Dans la procédure vous voulez obliger à renseigner les plages jaunes (moi je pensais que c'était déjà fait...) donc il est préférable d'introduire un formulaire de saisie pour les 8 cellules et ensuite on contrôle et si bon on poursuit.
Est-ce bien cela ?
S'il faut renseigner d'autre plage c'est le moment..... !

0
zikey Messages postés 116 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 14 mai 2016
10 juil. 2015 à 18:15
Bonjour,
C'est bien cela, j'avais pensé à un formulaire mais j'avais peur de changer les habitudes.
En effet, actuellement pour la période été 2015, ils font bien la saisie mais il n'y a pas de contrôle de cohérence.
Si on place un formulaire il faut que les nombres proposés soient visibles ou ils faut qu'ils apparaissent dans le formulaire
Cordialement
0
zikey Messages postés 116 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 14 mai 2016
10 juil. 2015 à 18:20
Je vais me lancer dans la création du formulaire mais je pense que je vais sûrement galérer pour les liens !
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
10 juil. 2015 à 18:39
Bonjour,
A force de réflexion essayez cette proposition sans formulaire :
'16)    '16)    Vérification des quantités de produits pour Bébés.

Dim Alimproposée As Integer
Dim Alimcommandée As Integer
Dim Coucheproposée As Integer
Dim Couchecommandée As Integer

coplja:
If contpl = False Then
    Alimproposée = WorksheetFunction.Sum(Range("S23:S26"))
    Alimcommandée = WorksheetFunction.Sum(Range("t23:t26"))
    Coucheproposée = WorksheetFunction.Sum(Range("S28:S31"))
    Couchecommandée = WorksheetFunction.Sum(Range("t28:t31"))
                        
    If Alimcommandée > Alimproposée Then
        vRépons11 = MsgBox("LA QUANTITE DE NOURRITURE COMMANDEE EST SUPERIEURE A CELLE PROPOSEE" _
                    & Chr(10) & "FAIRE LES CORRECTIONS", vbOKOnly, "VALEURS ERRONNEES")
        Range("T23:T26").Activate
        GoTo coplja
    ElseIf Couchecommandée > Coucheproposée Then
        vRépons10 = MsgBox("LA QUANTITE DE COUCHES COMMANDEE EST SUPERIEURE A CELLE PROPOSEE" _
                    & Chr(10) & "FAIRE LES CORRECTIONS", vbOKOnly, "VALEURS ERRONNEES")
        Range("T28:T31").Activate
        GoTo coplja
    End If
    contpl = True
End If

0
zikey Messages postés 116 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 14 mai 2016
10 juil. 2015 à 19:03
Bonjour,
C'est bien embêtant mais il n'y a pas d'évolution
Cordialement
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
10 juil. 2015 à 22:30
Bonjour,
Oui c'est de ma faute j'ai voulu le faire rapidement sans tester comme il se doit.
Cela semblait bon en réalisant le pas à pas, mais évidemment pas en exécution normale.
Je vais le reprendre, je pense en fin de soirée se sera bon, patience.

0