Formulaire - visualiser les données
Résolupijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
J'aimerais savoir s'il est possible à travers un formulaire de visualiser dans un espace "blanc" / une fenêtre permanente où je pourrais visualiser la référence des cellules (voir la ligne complète) que ma macro traite ?
Pour mieux me faire comprendre, mon formulaire consiste à faire le choix d'une vérification de données (sur une colonne ou sur une autre). Lorsque ma macro repère une erreur dans le format des données, je voudrais que dans la fenêtre de visualisation il y est d'inscrit l'adresse de ma cellule, sa ligne et sa colonne, sa valeur et les valeurs des cellules de la même ligne.
Est-ce possible techniquement ?
Si oui, avez-vous des pistes à me suggérer ?
Merci d'avance.
3 réponses
Oui, il est techniquement possible d'afficher dans une fenêtre permanente d'un formulaire les références des cellules traitées, notamment l'adresse, la ligne, la colonne, la valeur et les valeurs de la même ligne. Des solutions consistent à employer un UserForm avec des TextBox et à alimenter ces contrôles par code qui lit l'adresse, la ligne et la colonne des cellules. Pour afficher les données de la même ligne, il faut déclarer les cellules comme Range et utiliser Set pour leur référence, puis remplir les TextBox correspondantes ou une ListBox. En complément, certaines pistes préconisent une procédure dédiée et la vérification des erreurs d'argument ByRef, afin d'assurer la cohérence des données affichées et d'éviter des erreurs d'exécution.
-
Bonjour,
Je suppose que tu as déjà fait ton formulaire et ton fichier... Peux tu nous le transmettre?
-
Bon je ne pourrais pas tester car j'ai une référence manquante dans mon excel...
Ton formulaire, c'est bien UserForm2?
tu veux y afficher qu'elles données? ou se trouvent ces données?-
Bonjour,
Mon formulaire est bien le UserForm2.
Dans la fenêtre "de visualisation" j'aimerais y afficher l'ensemble des cellules d'une même ligne (une ligne = une commande à traiter). J'aimerais y afficher au minimum, le montant, le code budget associé, son fournisseur et la date de livraison attendue.
Qu'en pensez-vous ? -
Bonjour,
1- Je t'ai créé 6 TextBox dans le formulaire. Il se vident lors de l'initialisation de ton userform :
2- je t'ai créé une sub pour les remplir (dans ton module formulaire) :Sub RempliTextbox(ByVal Cel As Range) TextBox1 = Cel.Address TextBox2 = Cel.Value TextBox3 = Cel.Offset(0, Cel.Column - Cel.Column + 7).Value TextBox4 = Cel.Offset(0, Cel.Column - Cel.Column + 6).Value TextBox5 = Cel.Offset(0, Cel.Column - Cel.Column + 4).Value TextBox6 = Cel.Offset(0, Cel.Column - Cel.Column + 8).Value Verification_ALL.Repaint End Sub
Le remplissage se fait en fonction du Range envoyé en paramètre à la procédure (ByVal Cel As Range). Dans tous les cas, lorsque l'on appelle cette procédure, on passe en paramètre le range de la cellule en erreur.
D'ou :
> j'ai ajouté certains tests dans tes procédures du module Formulaire
exemple : If IsDate(cell) = False Then
pour pouvoir récupérer les Range des erreurs et les placer en paramètre comme ceci :
Call RempliTextbox(cell)
Par contre, je le répète, ne pouvant pas tester ton fichier, je ne sais pas du tout si cela fonctionne correctement. A toi de vérifier...
Ton fichier modifié -
-
-
-
-
Peux tu m'envoyer le fichier qui ^pose problème? Celui avec textbox et tout...
Ne fais pas attention, pikachu est un plaisantin ...-
-
-
-
Remplace :
Sub RempliTextbox() TextBox1 = cell.Address TextBox2 = cell.Value TextBox3 = cell.Offset(0, cell.Column - cell.Column + 7).Value TextBox4 = cell.Offset(0, cell.Column - cell.Column + 6).Value TextBox5 = cell.Offset(0, cell.Column - cell.Column + 4).Value TextBox6 = cell.Offset(0, cell.Column - cell.Column + 8).Value Verification_ALL.Repaint End Sub
par :Sub RempliTextbox() Verification_ALL.TextBox1 = cell.Address Verification_ALL.TextBox2 = cell.Value Verification_ALL.TextBox3 = cell.Offset(0, cell.Column - cell.Column + 7).Value Verification_ALL.TextBox4 = cell.Offset(0, cell.Column - cell.Column + 6).Value Verification_ALL.TextBox5 = cell.Offset(0, cell.Column - cell.Column + 4).Value Verification_ALL.TextBox6 = cell.Offset(0, cell.Column - cell.Column + 8).Value Verification_ALL.Repaint End Sub
-
Ouf cela fonctionne !
Pour une partie....
les lignes :TextBox3 = Cel.Offset(0, Cel.Column - Cel.Column + 7).Value TextBox4 = Cel.Offset(0, Cel.Column - Cel.Column + 6).Value TextBox5 = Cel.Offset(0, Cel.Column - Cel.Column + 4).Value TextBox6 = Cel.Offset(0, Cel.Column - Cel.Column + 8).Value
n'affichent rien :/
Je vais essayer de me débrouiller toute seule maintenant et je vous tiens au courant. Merci beaucoup de votre aide.
-