Bonjour à tous,
Ce post sera le dernier, je l'espère concernant le développement d'un formulaire de saisie de noms d'espèce pour faciliter la vie des naturalistes et rester à jours avec les normes d'écritures ICBN (mise en forme des noms d'espèces et d'auteurs) et INPN (versions TAXREF).
Mon code actuel me permet d'agir sur la mise en forme du texte (italique, balise et couleur) et de faire une saisie intuitive par recherche multimots (exemple j'écris "ab al" ou "ab al pour faire apparaitre tous les noms d'espèces comportant ces lettres comme "Abies alba susp alba nom d'auteur" J'ai intégré un code qui trie et sans doublons et depuis impossible d'utiliser la saisie intuitive par recherche mutlimots.
Code proposé par M.Boisgontier (ci-dessous) pour la saisie intuitive type Ab Al pour Abies alba :
	
	
	
	
	
		
Code permettant de trier et avoir une liste sans doublon
	
	
	
	
	
		
Mon formulaire comporte une combobox1 qui selon l'espèce saisie va afficher des correspondances dans différents texbox (voir fichier version saisie avec...). Quand j'intègre les codes de tries et sans doublons (fichier version sans saisie) ça ne fonctionne plus, je suis obligé d'enlever les codes de saisie intuitive et les codes liés permettant d'afficher une valeur dans les textbox.
Je vois que le problème et au niveau de la plage de données de la liste de la combobox1 et des codes utilisés basés sur a et temp ou choix1. Je n'arrive pas à adapter tous cela.
Si vous avez des idées sur le pourquoi du comment je vous en remercie d'avance. J'ai fait un certain nombre de manipulations et tests sans résultats...
	
		
			
		
		
	
				
			Ce post sera le dernier, je l'espère concernant le développement d'un formulaire de saisie de noms d'espèce pour faciliter la vie des naturalistes et rester à jours avec les normes d'écritures ICBN (mise en forme des noms d'espèces et d'auteurs) et INPN (versions TAXREF).
Mon code actuel me permet d'agir sur la mise en forme du texte (italique, balise et couleur) et de faire une saisie intuitive par recherche multimots (exemple j'écris "ab al" ou "ab al pour faire apparaitre tous les noms d'espèces comportant ces lettres comme "Abies alba susp alba nom d'auteur" J'ai intégré un code qui trie et sans doublons et depuis impossible d'utiliser la saisie intuitive par recherche mutlimots.
Code proposé par M.Boisgontier (ci-dessous) pour la saisie intuitive type Ab Al pour Abies alba :
		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 SubCode permettant de trier et avoir une liste sans doublon
		Code:
	
	
	Private Sub UserForm_Initialize()
  Me.ComboBox1.Clear
 
   Set f = Sheets("BD")
  Set MonDico = CreateObject("Scripting.Dictionary")
  a = f.Range("z3:z" & f.[z65000].End(xlUp).Row)   ' tableau a(n,1) pour rapidité
  For i = LBound(a) To UBound(a)
    If a(i, 1) <> "" Then MonDico(a(i, 1)) = ""
  Next i
  '--avec tri
  temp = MonDico.keys
  Call Tri(temp, LBound(temp), UBound(temp))
  Me.ComboBox1.List = temp
 End Sub
Sub Tri(a, gauc, droi) ' Quick sort
  ref = a((gauc + droi) \ 2) ' l'antislah \ donne la partie entière d'une division
  g = gauc: d = droi
  Do
     Do While a(g) < ref: g = g + 1: Loop
     Do While ref < a(d): d = d - 1: Loop
     If g <= d Then
        temp = a(g): a(g) = a(d): a(d) = temp
        g = g + 1: d = d - 1
     End If
   Loop While g <= d
   If g < droi Then Call Tri(a, g, droi)
   If gauc < d Then Call Tri(a, gauc, d)
End SubMon formulaire comporte une combobox1 qui selon l'espèce saisie va afficher des correspondances dans différents texbox (voir fichier version saisie avec...). Quand j'intègre les codes de tries et sans doublons (fichier version sans saisie) ça ne fonctionne plus, je suis obligé d'enlever les codes de saisie intuitive et les codes liés permettant d'afficher une valeur dans les textbox.
Je vois que le problème et au niveau de la plage de données de la liste de la combobox1 et des codes utilisés basés sur a et temp ou choix1. Je n'arrive pas à adapter tous cela.
Si vous avez des idées sur le pourquoi du comment je vous en remercie d'avance. J'ai fait un certain nombre de manipulations et tests sans résultats...
 
	 
 
		 
 
		 
					
				 
						
					 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		