Donnée formulaire / validation / msgbox(alerte)

bonsoir bonsoir;

voila éternel recherche de savoir auprès de mes instituteur que vous êtes ; j'aimerai savoir est-il possible que dans un formulaire userforme (textbox) on puisse intégrer une validation des données saisies par l'utilisateur avec des critères du type:

1. format de cellule personnaliser en 00-000000

2. si le texte saisi ne correspond pas au format de la cellule a laquelle il est destiné a y être enregistré

"celles(NumLigne, NumColon)"

==>>

if MsgBox ("Le texte saisi n'est pas au format adéquat : 00-000000" , _

& vbnewline & "voulez vous quand méme l'enregistrer?" ,VbYesNo) = vbYes then

.....................(continuer la saisi)

else

textbox.clear (si comme ca on procede biensur lol)

end if

et il doit redonner la main pour la ressaisi du textbox (correction)

precision:

il doit accépter les textbox vide

NumLigne et NumColon sont des numéro de ligne et de colonne prédéfinie dans le code.

et-il possible de réaliser un truc du genre? surtout le format de cellule n'est pas un prédéfinie d'Excel mais un format personnalisé 00-000000 !

savoir si c'est possible , et comme c'est faisable m'aiderai beaucoup a concevoir un bon formulaire répondant exactement au attentes, je reviendrai surement sur le forum avec le résultat afin de peaufiné d'autre détails.

2em Question? :

c'est mon premier formulaire - je lis les articles du net (également sur ce site), je regarde les vidéo sur youtube, et je consulte ici sur le forum ; mais y'a une question sur laquelle je n'arrive pas a mettre une réponse:

Si j'utilise un combobox afin de faire une recherche dans la feuille Excel et que les résultats de la recherche remplisse automatiquement le formulaire des informations déjà saisi auparavant : Est ce que la modification affecte la ligne correspondante ou bien elle en crée une nouvelle ligne?

Si vous avez besoin de voir le formulaire (le classeur Excel) pour cette seconde question pas grave , dés que c'est prêt je poste, l'important pour le moment c'est ma première question!

merci beaucoup d'avance.

Bonsoir,

Ta première question exige un choix que tu ne fais pas explicitement : le type de valeur que tu souhaites affecter à la cellule.

En effet, le format de cellule n'est que la façon dont tu fais apparaître une valeur numérique inscrite dans la cellule.

Soit tu optes pour une valeur numérique, nombre à 8 chiffres que tu pourras faire apparaître selon le format indiqué : "00-000000"

La cellule contiendra un nombre qui s'affichera selon le format voulu.

Dans la TextBox, tu auras de toutes façon une chaîne de caractères, soit que tu fais taper selon le format, soit que tu mets toi-même au format lors de la saisie, mais qu'il faudra alors reconvertir en nombre lors de l'affectation. Et il faudra outre l'affectation de valeur doter la cellule du format de cellule adéquat.

Soit tu optes pour une valeur texte, et tu contrôles que la saisie ne comporte que 8 chiffres et un tiret séparant les deux premiers chiffres des 6 autres.

Pas de conversion dans ce cas, tu affectes une valeur texte, qui ne sera pas convertie en nombre par Excel et demeurera du texte. Et pas de format de cellule particulier à mettre, également.

Quel que soit ton choix, la réalisation fait partie des manipulations habituelles d'un Userform : saisie dans un contrôle TextBox, contrôle de la saisie, validation et affectation de la valeur saisie dans Excel.

Ta 2e question est de même type (manipulations de base opérée en utilisant un Userform : recherche d'un enregistrement dans une base de donnée, affichage des valeurs des champs de l'enregistrement sélectionné dans les contrôles d'un userform, modifications opérées par l'utilisateur, validation et mise à jour de l'enregistrement.

En général on met à jour l'enregistrement, c'est à dire qu'on modifie la ligne concernée de la base, à partir des valeurs validées des contrôles du Userform. Tu peux évidemment décider que les modifications ainsi opérées ne donnent pas lieu à modification de l'enregistrement sélectionné au départ, mais se traduisent par la création d'un nouvel enregistrement... car c'est toi de toute façon qui programme ce qui doit être fait.

Tout est donc possible, il t'appartient seulement de décider ce qui doit être, et écrire le code permettant de le réaliser tel que tu l'auras décidé.

Cordialement.

merci beaucoup pour l'explication,

donc la je m'y colle a l'élaboration de mon userform et je reviens vous voir un peu plus tard pour la finalisation au cas ou!

Bon courage !

N'hésite pas à demander dans les cas où tu hésites sur la conduite à tenir.

Cordialement.

Bonsoir;

merci pour les conseilles et les encouragements

Voila Voila, je m'y suis coller et j'ai fait quelques chose qui tiens un peu la route j’ai un seul bémols,

les données saisi dans le premier formulaire (concernant la première feuille) ne sont pas directement saisi dans le tableau mais juste en bas!

je me suis trompé ou?

34saisi.xlsm (80.96 Ko)

bonjour

dans le mots de passe

A+

Maurice

Mille excuse je ne suis crétin

j'ai complétement oublié la sécurité

56saisi.xlsm (81.11 Ko)

Bonjour,

Pas le temps de regarder dans le détail, mais tu utilises un tableau Excel que tu as établi au départ à 500 lignes, et la recherche de la ligne d'inscription avec End(xlUp) va te renvoyer la dernière ligne du tableau, soit 500 et +1, 501.

C'est là que tu vas écrire, et l'inscription sous le tableau sera intégrée au tableau mais en laissant vides les lignes prédéfinies.

Il te faut réduire ton tableau aux lignes utilisées, soit ligne 3 en l'état actuel, il s'étendra automatiquement au fil des inscriptions.

D'autre part, ton tableau Excel est nommé automatiquement : TableauRFIG_Cereal. Tu peux utiliser ce nom comme tout nom de plage en VBA, il couvre la partie données du tableau (en-tête exclue).

Tu peux facilement définir la ligne d'insertion par :

NumDerLigne = [TableauRFIG_Cereal].Rows.Count + 1

La ligne est alors définie par rapport au tableau et non la feuille.

With [TableauRFIG_Cereal]
    NumDerLigne = .Rows.Count + 1
    .Cells(NumDerLigne, 1) = TextBox1.Value
    'etc.
End With

En procédant ainsi, n'oublie pas que les dates doivent toujours être convertie en dates...

Une meilleure méthode consiste servir un tableau avec les valeurs des TextBox (en utilisant une boucle...) puis affecter le tableau à la ligne d'insertion. Cela se présente en gros comme ça :

Dim Tablo(1 to 8), i%, Lgn%
For i = 1 to 8
    Select Case i
        Case 4, 6: Tablo(i) = CLng(CDate(Controls("TextBox" & i).Value))
        Case Else: Tablo(i) = Controls("TextBox" & i).Value
    End Select
Next i
With [TableauRFIG_Cereal]
    Lgn = .Rows.Count +1
    .Cells(Lgn, 1).Resize(, 8).Value = Tablo
End With

Dans ce cas, pour les dates, outre convertir la chaîne en date, il convient (pour éviter tout problème de conversion sauvage par VBA qui pourrait inverser jour et mois) de convertir également la date en entier long (les dates sont stockées sous cette forme dans Excel). Les colonnes du tableau sur la feuille doivent être mises au format de date voulu pour affichage en dates (s'agissant d'un tableau Excel, le format mis sur la première cellule s'étend à toute la colonne...)

Cordialement.

merci beaucoup, sincèrement vu mon niveau il me faudra un peu de temps afin de comprendre tout cela, je reviens ou cas ou j'ai d'autre question,

merci de me consacrer un peu de votre temps c'est vraiment aimable de votre part.

hahahahaha

Merci beaucoup mais pour l'instant ma solution est simple:

je n'aurais besoin du tableau autant que tel que lorsqu'il sera rempli donc il suffit de supprimer le tableau et l'utiliser autant que feuille de calcul avec filtres et c'est tout !

du fond du cœur merci!

Rechercher des sujets similaires à "donnee formulaire validation msgbox alerte"