Est-il possible de faire une validation de donnée avec un Userform

Chrige

XLDnaute Occasionnel
Bonjour

Je dispose d’un tableau Excel, dans lequel sont insérés des codes articles
Pour rentrer ces codes, j’avais pensé à la validation de données
Mais on dispose alors d’une liste comportant une seule colonne
Alors qu’il faudrait 2 colonnes, car on a besoin de savoir bien évidement à quoi le code correspond
De plus le nombre de ligne visible sans passer par l’agenceur semble limité à 8
Ce qui est insuffisant pour une saisie rapide (Je dispose déjà de plus de 30 codes).

Je connais peu la technique des UserForm
Serait-il possible de faire ce genre de chose pour mon besoin ?
J’ai réalisé un exemple avec plus d’explications
Merci
A Plus
 

Pièces jointes

  • Insersion Codes.xlsm
    23.9 KB · Affichages: 82

Staple1600

XLDnaute Barbatruc
Re : Est-il possible de faire une validation de donnée avec un Userform

Bonjour à tous

Chrige
Voir si cet userform te convient
MODE OPERATOIRE
•1) Extraire le contenu du zip dans le dossier de ton choix (sur le Bureau par exemple)
•2) Ouvrir le fichier Excel (celui que tu as joint dans le fil)
puis faire ALT+F11 et là (donc dans VBE), aller dans le menu Fichier
et choisir Importer un fichier :-> Pointer alors vers le fichier Userform1.frm
•3) Dans le code de la feuille nommée Tableau, copier/coller le code VBA ci-dessous:
(NB: Pour ce faire: clic-droit sur l'onglet Tableau -> Visualiser le code)
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 5 Then
If Target.Row > 2 Then
UserForm1.Show
End If
End If
End Sub

Pour tester, cliques sur une cellule en colonne E, normalement il doit se passer quelque chose ;)
(test OK sur mon PC : Excel 2013+Windows 7)

PS: Si difficultés, relire posément les instructions ci-dessus et/ou voir Ce lien n'existe plus;)
 

Pièces jointes

  • filChrige.zip
    1.7 KB · Affichages: 66

Chrige

XLDnaute Occasionnel
Re : Est-il possible de faire une validation de donnée avec un Userform

Bonjour Staple 1600

Il me convient parfaitement
C'est tout à fait ce que je souhaitais

J'ai fait pas mal d'essais de paramétrage pour l'adapter
Visiblement ce ListBox est dynamique avec ma liste ?
Si j'augmente le nombre de code, il augmente en conséquence...

Juste une chose
Est-il possible de récupérer à l'intérieur de ce ListBox les couleurs définies dans ma feuille Code
Ce n'est par gout de la présentation
C'est juste pour visualiser plus facilement les catégories d'articles

Merci beaucoup et A Plus
 

Staple1600

XLDnaute Barbatruc
Re : Est-il possible de faire une validation de donnée avec un Userform

Bonjour à tous

Chrige
Juste une chose
Est-il possible de récupérer à l'intérieur de ce ListBox les couleurs définies dans ma feuille Code
C'est juste pour visualiser plus facilement les catégories d'articles

C'est possible mais en passant par une Listview en lieu et place d'une ListBox (cf ci-dessous)
NB: A propos du fichier zip, même mode opératoire que dans mon message #2.
Regarde la pièce jointe 917882PREAMBULE
1)Formates ton tableau comme sur la copie d'écran ci-contre

2)Il faut créer un Array contenant les Interior.Color des cellules du tableau.
(cf macro:ListView1_ItemClick)

3)IMPORTANT:
Pour éviter les bugs, il ne faut pas de cellules vides dans la feuille Tableau.
(Toutes les cellules doivent être contiguës et sans "trou")



 

Pièces jointes

  • outputChrige.gif
    outputChrige.gif
    81.4 KB · Affichages: 117
  • v2Listview.zip
    2.4 KB · Affichages: 57

Chrige

XLDnaute Occasionnel
Re : Est-il possible de faire une validation de donnée avec un Userform

Bonjour Staple de si tôt ce matin

Cela fait un bon moment que je suis sur ton Userform
Mais j'ai une erreur que je n'arrive pas à comprendre

Je ne sais pas si j'ai bien compris tes directives ??

PREAMBULE
1)Formates ton tableau comme sur la copie d'écran ci-contre
Ca c'est fait

2)Il faut créer un Array contenant les Interior.Color des cellules du tableau.
Là je ne suis pas sûr d'avoir compris, que entend tu par "Array" ?

Pour éviter les bugs, il ne faut pas de cellules vides dans la feuille Tableau.
(Toutes les cellules doivent être contiguës et sans "trou")
Tu veux dire qu'il ne faut aucune cellule vide dans les lignes au-dessus et quelle que soit la colonne ?

Je Joins l'erreur
c'est au niveau de la ligne suivante que cela plante
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)


A+
 

Pièces jointes

  • Erreur.jpg
    Erreur.jpg
    67.7 KB · Affichages: 52
  • Erreur.jpg
    Erreur.jpg
    67.7 KB · Affichages: 60
  • Erreur.jpg
    Erreur.jpg
    67.7 KB · Affichages: 61

Staple1600

XLDnaute Barbatruc
Re : Est-il possible de faire une validation de donnée avec un Userform

Re

Chrige
Désolé pour ce petit souci :eek:
NB: Apparemment l'import d'Userform1 contenant un contrôle Listview fonctionne mal.

Mais ce n'est pas si grave, on va passer par cette alternative:
1) Dans un classeur vierge:
a) Tu crées deux feuilles: l'une sera nommée DATA, l'autre Tableau
b) tu crées un userform sur lequel tu insères manuellement un contrôle ListView *
(•voir sur le net pour les détails/précisions accessibles avec tout bon moteur de recherche ;))

2)
Tu dézippes le nouveau zip joint dans ce message.

3)
Tu importes le module standard Module1.
4) Tu ouvres dans le bloc-notes le fichier *.txt du fichier zip et tu copies/colles son contenu
dans le code de l'Userform
(Ce code remplace celui du précédent zip, et de cette manière ,
on évite le problème lié à l'import de l'userform par Fichier/Importer un fichier
)


5)
Tu lances la macro nommée MkColors (qui doit être dans le Module1)
6) Tu copies dans le code de la feuille nommée DATA, la procédure événementielle (cf. message #2)

7)
Ouf! Enfin, nous y voilà, cliques sur une cellule de la colonne E sur la feuille DATA.

NB: *: Il y a souvent des soucis avec ce contrôle, donc il faut parfois mettre les mains dans le cambouis
(Si tu rencontres ce souci, voir le remède à appliquer ici ;) )


 

Pièces jointes

  • v3ListView.zip
    1.6 KB · Affichages: 51
Dernière édition:

Chrige

XLDnaute Occasionnel
Re : Est-il possible de faire une validation de donnée avec un Userform

Re,

Je pense avoir bien suivi ta longue procédure
Malheureusement je débouche sur une autre erreur

Erreur '424':
Objet requis

Je vais continuer de chercher d'où vient cette erreur
Mais tu vois d'où cela peut venir avant .....

Je ne suis pas sur 2010 mais sur 2007

A+
 

Staple1600

XLDnaute Barbatruc
Re : Est-il possible de faire une validation de donnée avec un Userform

Re

Résumons
ETAPE 1
1) Crées un classeur (avec juste une feuille)
2) Importe le Module1 précédent dans le zip du message précédent
3) Copies dans ce Module1 la macro ci-dessous
Code:
Sub CreationClasseur()
Dim i&
On Error Resume Next
Sheets.Add.Name = "Tableau"
Sheets.Add.Name = "DATA"
For i = 1 To Worksheets.Count
If Not UCase(Sheets(i).Name) Like "*A*" Then
Application.DisplayAlerts = False
Sheets(i).Delete
End If
Next i
Call Mk_Colors
End Sub
Normalement jusqu'ici pas d'erreurs ;)
(Tu as désormais un classeur avec deux feuilles et des données sur la feuille nommée Tableau)

ETAPE2
1) Crées un userform dans VBE en faisant : ALT+F11 puis Insertion/Userform
2) Sur le userform, insères un contrôle Listview (qui devra se nommé Listview1), puis deux Labels nommés Label1 et Label2 et enfin un CommandButton nommé CommandButton1
3) Enfin copies/colles le contenu du fichier *.txt (présent dans le fichier zip) dans le code du Userform
Normalement ici aussi , pas encore de problème.
4) Pour finir copier la procédure événementielle du message #2 dans le code de la feuille DATA.

ETAPE FINALE: Enregistrer le fichier en *.xlsm, puis aller en colonne E sur la feuille DATA pour tester.
 

Staple1600

XLDnaute Barbatruc
Re : Est-il possible de faire une validation de donnée avec un Userform

re

Chrige
Voici le résumé en images.
Normalement, cela devrait fonctionner sur ton PC
(J'ai refait les étapes sur un nouveau fichier sur mon PC, en vérifiant à chaque fois, et au final, pas de messages d'erreur, cela fonctionne ;)
outputLview2.gif
 

Chrige

XLDnaute Occasionnel
Re : Est-il possible de faire une validation de donnée avec un Userform

Bonjour Staple

Me voilà de retour
Merci pour tous ces détails
Je m'y mets tout de suite

Juste une petite question
C'est bien de faire comme cela, cela permet de bien visualiser les étapes
Mais cela n'aurait pas été plus simple pour toi d'envoyer le fichier ?

Peut-être à tout à l'heure si cela fonctionne du 1er coup

A+
 

Staple1600

XLDnaute Barbatruc
Re : Est-il possible de faire une validation de donnée avec un Userform

Bonsoir à tous

Chrige
Bonjour Staple
Juste une petite question
C'est bien de faire comme cela, cela permet de bien visualiser les étapes
Mais cela n'aurait pas été plus simple pour toi d'envoyer le fichier ?
Peut-être à tout à l'heure si cela fonctionne du 1er coup
A+
Non cela aurait plus simple pour toi ;)
Mais fidèle à ma propre philosophie, j'ai décidé depuis un petit bail déjà ne ne plus joindre de fichier Excel.
Ceci pour inciter le demandeur à mettre les mains dans le cambouis et donc à mouiller la chemise pour participer à la résolution de sa propre question ;)
N'est-ce pas plus enrichissant d'arriver à créer un fichier Excel, d'y mettre du VBA, d'arriver à comprendre comment cela fonctionne en suivant des indications déposés sur le forum plutôt que juste cliquer sur un fichier téléchargé?

Et tu disais toi-même
Je connais peu la technique des UserForm
J'ai donc lu ceci comme une invitation à apprendre ;)
 
Dernière édition:

Chrige

XLDnaute Occasionnel
Re : Est-il possible de faire une validation de donnée avec un Userform

Re,

Et bien me revoilà de nouveau
Avec tout ce luxe de détail
Cela n'a pas été long
Et effectivement cela fonctionne semble t-il très bien :eek:

Mais il y a une hic
le but c'était d’avoir sous les yeux l'ensemble des codes avec leurs couleurs respectives
Comme je le disais dans le #3
Juste une chose
Est-il possible de récupérer à l'intérieur de ce ListBox les couleurs définies dans ma feuille Code
Ce n'est par gout de la présentation
C'est juste pour visualiser plus facilement les catégories d'articles

Mais je vois à cette solution, que ce n'est peut-être pas ce que tu as compris :confused:

A+
 

Staple1600

XLDnaute Barbatruc
Re : Est-il possible de faire une validation de donnée avec un Userform

Re

Content que cela fonctionne chez toi.

Pour ce qui du hic, cela n'en ait pas vraiment un ;) car tu disais plus bas.
Il me convient parfaitement
C'est tout à fait ce que je souhaitais
Néanmoins, si tu veux avoir tous les couleurs affichées, il suffit d'ajouter autant de Label que de couleurs à afficher et de renseigner leur propriété BackColor avec l'Interior.Color de la cellule correspondante.
Je te laisse donc tenter l'expérience puisque tu as de quoi déduire le code VBA en regardant le code existant dans l'userform.
Il faudra mettre ces lignes de code dans la procédure Initialize de l'userform.
 

Chrige

XLDnaute Occasionnel
Re : Est-il possible de faire une validation de donnée avec un Userform

Bonsoir

Effectivement cela peut se faire comme cela
Mais c'est très lourd à gérer.

En 1er parce que à chaque changement ou rajout de code, il faudra intervenir dans l'UserForm
En second il est nécessaire de faire une autre rangée, donc une Listwiview plus large
Et de toute façon cela ne change pas en ce qui concerne les codes eux-mêmes, il ne seront pas en couleur dans celle liste.

Si il est très facile de gérer les couleurs dans Excel, cela est très limité et complexe en matière d'UserForm :mad:

Merci pour tout
Et si il n'y a pas d'autres moyens de faire :confused:
Je me contenterai de cela
Et comme je l'avais effectivement dit, cela correspond exactement à ce j'attendais
et je le pense toujours

A+
 

Staple1600

XLDnaute Barbatruc
Re : Est-il possible de faire une validation de donnée avec un Userform

Bonjour à tous

Chrige
Effectivement cela peut se faire comme cela
Mais c'est très lourd à gérer.
As-tu au moins essayer d'ajouter des labels avant d'estimer cela?

Pour ma part, je ne vois pas pourquoi la solution avec listview + 1 label affichant la couleur du code ne te convient pas.
Car quand celle-ci s'affiche, l'utilisateur doit lire les codes affichés avant de choisir celui qui appliqué sur la feuille.
Et quand il en sélectionne un, il verra dans le label la couleur relative au code sélectionné.
Dans ce cas, quelle est l'utilité de voir toutes les couleurs?
A moins de pas savoir lire, ce qui est peu probable, si on utilise Excel ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 235
Messages
2 086 476
Membres
103 227
dernier inscrit
maloalek