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

Bonsoir à tous

Si...
Loin de moi l'idée de me moquer :)
Il s'agit juste d'un ripage de doigt je suppose.
(Par contre, j'ai supposé R=Range, mais il venait d’où cet R esseulé ;)

En regardant plus attentivement ta PJ, une soudaine envie de Treeview s'est fait sentir en moi.
(Elle était déjà latente en moi depuis mes essais de listview, rassures-toi)
Penses-tu qu'il soit raisonnable de s'engager dans cette voie ?
Est-ce que par hasard tu maitrises l'usage de ce contrôle ?
 

Chrige

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

Bonsoir Si, Bonsoir Staple

Je te remercie Si
Je réponds avec du retard, car j’avais toujours mon problème de micro
Je viens heureusement de le résoudre et je me repenche sur ma demande.

Très ingénieux ton idée
Tu récupère la couleur du fond de la cellule pour la transmette à la couleur des caractères
Il semble donc que ce qui est visiblement très difficile de réaliser pour la couleur de fond dans un ListView
L’est beaucoup plus simplement pour la couleur des caractères ?

Ce n’est pas si clair que la couleur de fond tel que je l’espérais
Mais c’est cependant très intéressant au niveau du discernement entre les codes.
Et cela me convient parfaitement

J’ai un peu modifié ta macro, pour me permettre d’affecter la couleur sélectionnée à la cellule de droite également
Mais par contre il y a quelque chose que je n’arrive pas à faire.
Bien que ce soit pourtant surement très facile !

Je n’ai pas besoin du Lable1 et du Label2, mais il ne me dérange pas
Cependant je souhaiterais ne pas avoir à cliquer sur le Label1 pour valider mon code
Mais plutôt de le faire directement à partir du ListVeiw.

A+
 

Staple1600

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

Bonsoir à tous

Chrige
Je vois que tu prends plaisir à mettre les mains dans le cambouis ;)
Je te laisse attendre les mains de Si... pour modifier son code.
A+ sur XLD.
 

Si...

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

salut

le réglage est d'autant plus fin que le moteur est spécial ;) !

Si... à dit:
Private Sub Lv_ItemClick(ByVal li As MSComctlLib.ListItem)
xxIf li = "" Then
xxxxActiveCell.Interior.ColorIndex = xlNone 'formulation à connaître aussi
xxxxActiveCell = ""
xxElse
xxxxActiveCell.Interior.Color = Lv.ListItems(li.Index).ForeColor
xxxxActiveCell = li
xxEnd If
xxActiveCell(1, 2).Select
xxUnload Me
End Sub
 

Pièces jointes

  • ListView et couleurs.xlsm
    27.5 KB · Affichages: 36

Chebe

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

Bonjour Si et encore merci

C'est plus simple et c'est bien ce que je voulais
Je voulais aller voir dans la rubrique "personnalisé" de la ListView
Mais j'ai le message d'erreur suivant
Il semble que ce soit courant et j'ai trouvé bon nombre de post sur ce sujet
Notamment sur ce Forum
J'ai suivit leurs solution :
regsvr32.exe "C:\windows\system32\mscomctl.ocx"
Quand je lance cette commande, j'ai bien la réponse "Réussi"
Mais rien ne change
Je n'ai toujours pas accès à cette rubrique et je continue d'avoir le même message d'erreur

Vois-tu d’où cela peut venir ?


J’ai trouvé facilement le moyen d’affecter la couleur sélectionnée à la cellule de droite comme précédemment.
Par contre je recherche le moyen de paramétrer la largeur de la 2ème colonne pour me permettre de visualiser toute la définition
(Ces définitions étant en réalité plus longues que celles que j’avais mis dans mon exemple)
Il n’y a pas de ColumnWidths dans les propriétés sans doute parce que à la différence de ListBox les largeurs sont ajustables directement dans la ListView ouverte.
Normalement cela doit se paramétrer au niveau de « Lv.ListItems.Add » ?? Mais je n’ai pas trouvé la solution dans ton code.

De même j’ai essayé d’ajouter une 3ème colonne pour me permettre de rentrer occasionnellement une valeur (Quand celle-ci figure dans la feuille « Tableau »)
Je connais un peu le paramétrage de ces colonnes quand elles figurent ligne par ligne dans le code
Mais je comprends malheureusement pas ton code et je ne situe pas ou cela se gère

Je vois bien que si je remplace le « 2 » par « 3 » dans
Code:
Lv.ListItems(Lv.ListItems.Count).ListSubItems.Add , , C(1, 2)
Je visualise bien cette 3ème colonne, mais je pers alors la 2ème colonne :mad:


A+
 

Pièces jointes

  • Erreur.jpg
    Erreur.jpg
    17.1 KB · Affichages: 40
  • Erreur.jpg
    Erreur.jpg
    17.1 KB · Affichages: 42
  • Erreur.jpg
    Erreur.jpg
    17.1 KB · Affichages: 41
  • ListView et couleurs (avec 3 colonnes).xlsm
    28.1 KB · Affichages: 45
  • ListView et couleurs (avec 3 colonnes).xlsm
    28.1 KB · Affichages: 40
  • ListView et couleurs (avec 3 colonnes).xlsm
    28.1 KB · Affichages: 42
Dernière édition:

Chrige

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

Bonjour

Je n'ai pas répondu hier à partir de mon micro
et je vois que j'ai encore oublié de me loger
Je suis étourdi :(

Encore un petit problème
L'activation de l'UserForm par un simple clic me gêne
J'ai donc voulu le remplacer par ceci

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 5 Then
    UserForm1.Show
    End If
End Sub

Mais sauf à devoir utiliser la touche ESC avant d'activer ma sélection dans la ListView, cela ne fonctionne pas
et j'ai bon chercher, je n'en vois vraiment pas la raison !


A+
 

Chrige

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

Bonjour à tous

Si, si tu passe sur le Forum et que tu as un peu de temps .....
J'ai bien essayé de résoudre le problème qui se pose si je veux activez la macro par un double-clic au lieu d'un simple clic, mais je n'y suis pas arrivé
Si je la lance par un raccourci c'est cependant ok, mais c'est moins pratique !

Je n'arrive toujours pas non plus à aller dans la rubrique "personnalisé" voir #35
et je n'ai pas trouvé la solution pour paramétrer la largeur de la 2ème colonne.

Merci
A+
 

Staple1600

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

Bonjour à tous


Chrige
En attendant Si... ;)
J'ai testé ton code
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 5 Then
UserForm1.Show
End If
End Sub

Cela fonctionne si tu es dans la colonne E quand tu double-cliques
(Et si ce code VBA est bien dans le code de la feuille et pas dans un module Standard)

PS: Quelle est ta version d'Excel ?
Car j'ai eu un souci avec Seven et Excel 2013 avec certains contrôles que j'ai résolu avec cette procédure (que tu peux tester à tes risques et périls)
https://www.excel-downloads.com/threads/photo-sur-formulaire.218041/
 
Dernière édition:

Si...

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

Salut

En attendant Si... ;)

je m'efforce d'être le moins en retard que possible

PS: Quelle est ta version d'Excel ?
Car j'ai eu un souci avec Seven et Excel 2013 avec certains contrôles que j'ai résolu avec cette procédure (que tu peux tester à tes risques et périls)
https://www.excel-downloads.com/threads/photo-sur-formulaire.218041/ [/FONT]

Pour ce problème, une solution éventuelle consiste à supprimer le contrôle et à l'inclure de nouveau en le paramétrant comme précédemment. A ce propos voir, les explications du code et l'image explicative dans le fichier joint.
 

Pièces jointes

  • ListView et couleurs (avec 3 colonnes).xlsm
    104.8 KB · Affichages: 32
  • ListView et couleurs (avec 3 colonnes).xlsm
    104.8 KB · Affichages: 45
  • ListView et couleurs (avec 3 colonnes).xlsm
    104.8 KB · Affichages: 51

Staple1600

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

Bonjour Si..

Salut
Pour ce problème, une solution éventuelle consiste à supprimer le contrôle et à l'inclure de nouveau en le paramétrant comme précédemment. A ce propos voir, les explications du code et l'image explicative dans le fichier joint.

Sur mon PC, j'ai testé toutes les procédures, la tienne inclue.
Seule celle que je cite a résolu le souci et me permets avec Excel 2013 d'utiliser les contrôles du SP6.

NB: Bien que je me demande si ce n'est pas depuis cette manip que j'ai ce souci aléatoire d'erreur Exécution interrompue
 

Chrige

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

Bonjour Staple

Je suis sous Excel 2007 et XP Pro

Est-ce que tu as bien testé
Car la ListView s'ouvre bien
Mais on ne peux pas cliquer sur un code
Ou alors il faut taper sur Esc avant

Je joins à nouveau le fichier avec cette fois la macro "DoucleClic"

A+
 

Pièces jointes

  • ListView et couleurs (avec 3 colonnes) & Dbl Clic.xlsm
    28 KB · Affichages: 41

Staple1600

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

Re

Chrige
Je viens de tester cette modif
cela semble OK
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 5 Then
Cancel = True
    UserForm1.Show 0
    End If
End Sub

PS: t'aurais pas zappé le passage de Si.. par hasard ?
 

Chrige

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

Re,

Merci Staple
Je viens de tester cette modif
cela semble OK

Effectivement avec ta modif, cela fonctionne bien
Je ne connaissais pas ce paramétre "0"
Mais même sans lui cela fonctionne
C'est "Cancel = True" qui solutionne le problème.

PS: t'aurais pas zappé le passage de Si.. par hasard ?
Oui merci, je n'avais pas vu sa réponse :eek:


Bonjour Si

Merci pour la 3ème colonne.
Mais je vois que je n'ai sans doute pas été assez clair dans ce que je voulais faire
Le but de cette 3ème colonne est de remplir la colonne G avec le nombre (Quand il y a un nombre indiqué)
Pour ce nombre je n'ai pas besoin de couleur dans la feuille Excel
J'ai modifié ton code
J'obtiens bien ce nombre dans la colonne G Ok
J'ai bien pour la colonne F, la même couleur que dans la colonne E Ok
mais je me retrouve aussi avec le nombre dans la colonne F :mad:
Et je ne vois pas pourquoi ??

Merci pour tes explications
Mais le problème n'est pas propre à cette ListVeiw
Si j'ouvre un nouveau classeur
et que j'insère un UserForm, puis une ListView
Je me retrouve avec le même problème !
Je ne peux accéder à cette rubrique

Tu ne m'a pas répondu pour le paramétrage de la largeur de la 2ème colonne
Mais peut-être que cela peut se paramétrer dans cette rubrique "personnalisé" ???
Comme je ne peux pas y allé !
Je suppose que comme pour Une ListBox on doit pouvoir le faire en code ?
J'ai bien cherché sur le Net, mais j'ai pas trouvé ou pas compris.

Je joins à nouveau ton fichier avec mes propres modifications et la modif de Staple pour l'ouverture de la ListView

A+
 

Pièces jointes

  • ListView et couleurs (avec 3 colonnes)-1 Modifié.xlsm
    110.2 KB · Affichages: 54

Chrige

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

Re,

Oui cela je le savais c'est pour cela que je l'ai ajouté dans le code
J'en doute pas un instant ;)

Quand au zéro ajouté, voir l'aide VBA à ce sujet avec la touche F1
C'est ce que j'ai fait en 1er avant même de l'insérer dans la macro
Mais pas avec F1
Qui d’ailleurs ne renvoie rien dans le cas présent
L'aide Microsoft c'est un peu à l'image de ce que disait Coluche en parlant des technocrates
Quand tu cherches quelques chose dans l'aide de Microsoft, au bout d'un moment tu ne sais plus ce que tu cherches...

J'ai donc été sur le net où j'ai trouvé ce tuto
Utiliser les UserForm en VBA Excel
Visiblement le mode non modal n'est donc pas nécessaire

Si par contre l'aide Microsoft au lieu de m'envoyer ce message barbare :
la classe n'est pas enregistrée.
Recherche d'un objet avec CLSID : ....................

Pouvait me dire d'où cela peu provenir, çà m’arrangerais bien :confused:

a+
 

Discussions similaires

Statistiques des forums

Discussions
312 413
Messages
2 088 201
Membres
103 766
dernier inscrit
mahieux