XL 2019 Saisie naturaliste basée sur code private sub de liste intuitive

lusert

XLDnaute Junior
Bonjour Cher membres,

Cette fois je viens vers vous concernant mon souhait d'améliorer mes fiches de saisie naturaliste. Je m'explique lister des espèces sur feuille papier c'est long me suis donc inspiré d'une macro pour rechercher comme ça les noms d'espèces et au fur et à mesure que j'écrit un mot il apparait le nom d'espèces en question. Mon porblème est le suivant j'ai connaissance de deux macro, l'une pour l'autocomplétion et l'autre pour la suivi intuitive. J'aimerais fusionner ces deux macro pour le coté esthétique car ma macro complétion ici présente en image permet d'afficher un nom au fur à fur que les lettres sont écrites mais ils faut cliquer sur la fléche pour voir tous les mots commençant par ces lettres.

A l'opposé (image avec fond jaune) l'autre macro permet par sa saisie intuitive de réduire la liste en question au fur et à mesure que des lettres sont écrites et on voit directemen tla liste se réduire. Je souhaite donc fusionner ces deux macro pour avoir quand j'écrit un mot apparaitre dans ma cellule tout en visualisant la liste se réduire. Pensez-vous qu'il est possible de faire cette manipe ? J'ai essayé mais tous foire.
complétion.PNG
1587740322567.png




ps : macro complétion _ code vba_de ma feuille de saisie
Dim a()
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([A2:A16], Target) Is Nothing And Target.Count = 1 Then
a = Sheets("bd").Range("liste").Value
Me.ComboBox1.List = a
Me.ComboBox1.Height = Target.Height + 3
Me.ComboBox1.Width = Target.Width
Me.ComboBox1.Top = Target.Top
Me.ComboBox1.Left = Target.Left
Me.ComboBox1 = Target
Me.ComboBox1.Visible = True
Me.ComboBox1.Activate
Else
Me.ComboBox1.Visible = False
End If
End Sub
Private Sub ComboBox1_Change()
ActiveCell.Value = Me.ComboBox1
End Sub
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.ComboBox1.List = a
Me.ComboBox1.Activate
Me.ComboBox1.DropDown
End Sub
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then ActiveCell.Offset(1).Select
End Sub

ps : macro complétion _ code vba d'un module1
Sub xx()
x = ActiveWindow.ScrollRow
y = Cells(ActiveWindow.ScrollRow, 1).Top
End Sub


ps : macro vba_ saisie intuitive de ma feuille de saisie sans module 1 juste en associant une combobox
Dim a()
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([A2:A10], Target) Is Nothing And Target.Count = 1 Then
Set f = Sheets("BD")
a = Application.Transpose(f.Range("A2:A" & f.[A65000].End(xlUp).Row))
Me.ComboBox1.List = a
Me.ComboBox1.Height = Target.Height + 3
Me.ComboBox1.Width = Target.Width
Me.ComboBox1.Top = Target.Top
Me.ComboBox1.Left = Target.Left
Me.ComboBox1 = Target
Me.ComboBox1.Visible = True
Me.ComboBox1.Activate
Else
Me.ComboBox1.Visible = False
End If
End Sub
Private Sub ComboBox1_Change()
If Me.ComboBox1 <> "" And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
Me.ComboBox1.List = Filter(a, Me.ComboBox1.Text, True, vbTextCompare)
Me.ComboBox1.DropDown
End If
ActiveCell.Value = Me.ComboBox1
End Sub
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.ComboBox1.List = a
Me.ComboBox1.Activate
Me.ComboBox1.DropDown
End Sub

Ah oui ! une dernière chose pensez vous qu'il soit utilise d'attribuer une macro pour cela (image ci-dessous)?
J'ai crée une liste toute simple depuis validation de donnée ou j'ai renseigné la feuille et je me demande si il ne serait pas plus simple comme avec ma macro intuitive ou avec une formule excel de permettre de voir la liste en entière vu qu'il y a que 6 champs à choisir pour la saisie (ça pourrait aider mes futurs stagiaire botaniste qui ne connaissent pas par coeur ces codes ?
1587741283273.png
Merci par avance pour vos idées :)
 
Dernière édition:

lusert

XLDnaute Junior
C'est vrai ! pour visualiser c'est plus pratique ^^

Le voici
le fichier fiche_de_releves_vierge comporte la macro completion sur la feuille FICHE et BD sont les deux feuilles à regarder, comportant la macro, la combobox et les données de liste.

Le fichier copie de DV comporte un exemple de macro de saisie intuitive que j'ai trouvé sur le net
 

Pièces jointes

  • Copie de DVComboBoxIntuitif_lettresContenues.xlsm
    101.3 KB · Affichages: 13
  • FICHE_de_RELEVES_VIERGE.xlsm
    589.4 KB · Affichages: 11

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,


La recherche est multi-mots. On peut frapper
ab lasio

Sans titre - Copie (9).png


VB:
Dim choix1()
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect([B77:B124], Target) Is Nothing And Target.Count = 1 Then
    choix1 = Application.Transpose(Sheets("bd").Range("liste").Value)
    Me.ComboBox1.List = choix1
    Me.ComboBox1.Height = Target.Height + 3
    Me.ComboBox1.Width = Target.Width
    Me.ComboBox1.Top = Target.Top
    Me.ComboBox1.Left = Target.Left
    Me.ComboBox1 = Target
    Me.ComboBox1.Visible = True
    Me.ComboBox1.Activate
  Else
    Me.ComboBox1.Visible = False
  End If
End Sub

Private Sub ComboBox1_Change()
If Me.ComboBox1 <> "" Then
     mots = Split(Trim(Me.ComboBox1), " ")
     Tbl = choix1
     For i = LBound(mots) To UBound(mots)
       Tbl = Filter(Tbl, mots(i), True, vbTextCompare)
     Next i
     Me.ComboBox1.List = Tbl
     Me.ComboBox1.DropDown
End If
End Sub

Private Sub ComboBox1_click()
  ActiveCell = Me.ComboBox1
End Sub

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 13 Then
    ActiveCell.Offset(1).Select
  End If
End Sub

Faire une recherche Google: excel recherche intuitive


Boisgontier
 

Pièces jointes

  • Copie de FICHE_de_RELEVES_VIERGE.xlsm
    595.4 KB · Affichages: 16
Dernière édition:

lusert

XLDnaute Junior
Merci à vous tous pour les améliorations de mon fichier de saisie naturaliste.

BrunoM45 ! Ton fichier est top ! Il se rapproche le plus de ce que j'imaginais. Je t'en remercie, maintenant ma saisie d'espèces est vraiment rapide, je vais gagner un temps fou :)

Deux petites choses seraient à améliorer. Je n'y connais pas grand chose en VBA mais je vais essayer de participer à l'amélioration de mon propre fichier :

La première (image ci-dessous) , il y a un léger bugue. Par exemple quand je tape le début helleborus le mot n'apparait que à la fin de la liste ? Sur mon ancienne macro il apparaissé que les nom d'espèces commençant pa helleborus et là je n'est plus le cas ? sauf pour la dernière entité visible de la liste

1587812894002.png

Après recherche entre les deux code VBA que j'avais joint en début de discution. Il semblerait que le code complétion ne permet pas de réduire les liste au début de mot écrit par contre le code vba saisie intuitive lui le permet mais ne permet pas d'afficher directement dans la celle la suite du mot.
1587813591346.png


Une dernière chose que je vais tenter d'améliorer est le visuel de cette capture d'écran. Je pense qu'il faille que je parte sur le début de ta macro BrunoM45 ? Cette liste en question ci-dessous (composé de "1,2,3,4,5,r,+) est donc une liste de petite taille et l'idéal serait que j'arrive dès que je clique dans une cellule, ici par exemple F77, qu'il apparaissent les champs de la liste comme dans la capture d'écran mais sans cliquer sur la petite fléche présente dans la cellule

1587812168430.png


PS : j'essaie de produire une feuille de saisie naturaliste top pour améliorer la vie de tous mes collégues naturalistes et moi même
 
Dernière édition:

lusert

XLDnaute Junior
Après plusieurs essais, je n'arrive à rien ! Il semblerait finalement BOISGONTIER que ta proposition de saisie intuitive soit adapter pour faire de la saisie terrain rapide, ça permets de réduire ma liste de nom d'espèce en fonction du mot que j'écrit et de faire défiler la liste jusqu'à tomber sur le nom d'espèce que je veux écrire comme dans la capture d'ecran ci-contre
1587816311952.png


L'idéal serait d'y associer la fonction ci-contre : texte surligner en bleu proposé correspodant au prmeier choix de la liste déroulante (capture d'ecran ci-dessous) correspodance au code VBA de la macro complétion. Je ne sais pas par contre BOISGONTIER et
BrunoM45
comment coller en terme de code vba cette fonction de proposition de suite de mot dans la macro intuitive.
1587816386349.png
 

lusert

XLDnaute Junior
Je continue mes recherches en attendant vos avis^^
Je suis tombé sur un fichier de nom de pays au sein du quel j'ai ajouté un code qui affiche directement dans la cellule le nom exemple : bahamas et Bahreïn quand j'écrit bah en cliquant sur la flèche il apparait dan sma liste juste ces deux pays et ensuite si je rajoute a à bah alors le mot bahamas apprait dans cellule vu qu'il n'y a pas d'autre choix. J'aime bien ce procédé mais j'aimerais y ajouter comme en saisie intuitive la liste que l'on peut se réduire au fur et à mesure que l'on rajoute des lettre au mot.

Voila le fichier en question si vous trouvez une solution. Moi mes macro explose à chaque fois !
 

Pièces jointes

  • Copie de DVSaisieIntuitiveComboBoxtest1.xlsm
    62.2 KB · Affichages: 1

lusert

XLDnaute Junior
Bonsoir,

par défaut, c'est le premier de la liste restante qui est pris.


Boisgontier


Je vous remercie pour le fichier :)

Qu'entendez vous par "par défaut, c'est le premier de la liste restante qui est pris" ? Vous faites allusion à ce procédé ci-dessous ? bahamas et Bahreïn quand j'écrit bah en cliquant sur la flèche il apparait dans ma liste juste ces deux pays et ensuite si je rajoute a à bah alors le mot bahamas apparait dans cellule vu qu'il n'y a pas d'autre choix.
 

lusert

XLDnaute Junior
Je vous remercie pour le fichier :)

Qu'entendez vous par "par défaut, c'est le premier de la liste restante qui est pris" ? Vous faites allusion à ce procédé ci-dessous ? bahamas et Bahreïn quand j'écrit bah en cliquant sur la flèche il apparait dans ma liste juste ces deux pays et ensuite si je rajoute a à bah alors le mot bahamas apparait dans cellule vu qu'il n'y a pas d'autre choix.

Je transvaserrais votre code sur mes colonnes de recouvrement ou il y avait les liste simples au choix (1,2,3,4,5,r,+) en attendant de trouver une meilleur solution pour la saisie des espèces (j'ai l'impression que associer un code vba de saisie intuitive à une couleur au mot sélectionner de liste (comme en vba complétion) + faire apparaitre directement le mot dans la cellule si c'est le dernière de sa liste, cela semble chose impossible ?
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,

Si vous frappez dans le combobox ab lasio, il apparaît dans le combobox 3 lignes.
Si vous validez avec Entrée, c'est le premier de la liste qui est sélectionné dans la cellule.
Si vous cliquez sur autre item, c'est lui qui est mis dans la cellule.

Boisgontier
 
C

Compte Supprimé 979

Guest
Bonsoir Lusert,

J'ai retrouvé un fichier que j'avais, j'y ai mis ta liste... tu regarderas ;)
Mais tu n'en ai peut-être déjà plus là
 

Pièces jointes

  • BrunoM45_ComboxChoixSeRétréci.xlsm
    252.4 KB · Affichages: 13

lusert

XLDnaute Junior
Bonsoir Lusert,

J'ai retrouvé un fichier que j'avais, j'y ai mis ta liste... tu regarderas ;)
Mais tu n'en ai peut-être déjà plus là

Super ! Je t'en remercie ! Cette forme de saisie que tu me présentes est beaucoup agréable à la lecture et à la saisie . C'est vraiment top ce que l'on faire en vba quand on si connait ^^ Maintenant que tu as fait le plus gros je vais quand même ressayer de mon côté d'intégrer des lignes de vba pour faire apparaitre directement le nom d’espèce dans ma cellule sans passer par entrer (comme tu l'expliquais) comme sur l'exemple que j'expliquais plus haut.

Ps : En vrai je suis toujours à la recherche la formule idéal ^^ laissez moi chercher jusqu'à ce soir ;) Je vais tenter une expérience
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 898
Membres
101 834
dernier inscrit
Jeremy06510