Saisie intuitive semi automatique - A l'aide SVP.

Jean Racine

XLDnaute Nouveau
Bonjour a tous,

Je préviens que ca fait deja 2 semaines que j'ai cherché j'ai trouvé plein de choses mais j'ai jamais réussi a faire ce que je voulais ... sauf que la faudrait vraiment que je trouve la solution a mon probleme.

Si une ame charitable veux bien me venir en aide svp ...

Voila

J'ai ce fichier la (tableau du haut) et j'aimerai en faire celui la (du bas) :

Grace a l'onglet qu'il y aura dans ce meme fichier :

Les fichiers vous pouvez les télécharger ici :
Fichier Excel tableau ou j'ai besoin de la Saisie intuitive semi auto dans la colonne E2
- Télécharger le fichier ici : Ficheamodifier.csv - Petit Fichier

Fichier Excel qui doit etre mis sur un nouvel onglet du fichier tableur ci dessus sous le nom de : "villes"
- Télécharger le fichier ici : Villes.xlsx - Petit Fichier


Si vous avez des questions hésitez surtout pas, si je peux essayer d'y répondre ...

Cordialement,
 

Staple1600

XLDnaute Barbatruc
Re : Saisie intuitive semi automatique - A l'aide SVP.

Bonsoir à tous

Jean Racine [Bienvenue sur le forum]
Si vous avez des questions hésitez surtout pas, si je peux essayer d'y répondre ...
J'en ai deux ;)
1) Pourquoi n'avoir pas joint de fichier exemple directement dans ta discussion comme expliqué dans le petit préambule qui s’affiche quand on crée une discussion ou conseillé dans la charte du forum ?
NouvelleDiscuss.jpg
2) Est-ce parce que tu n'as pas pris le temps de lire ni l'un ni l'autre ?
 

Pièces jointes

  • NouvelleDiscuss.jpg
    NouvelleDiscuss.jpg
    38.4 KB · Affichages: 61
  • NouvelleDiscuss.jpg
    NouvelleDiscuss.jpg
    38.4 KB · Affichages: 61

job75

XLDnaute Barbatruc
Re : Saisie intuitive semi automatique - A l'aide SVP.

Bonsoir Jean Racine, JM,

Le fichier avec la liste des villes fait plus de 3 Mo, je l'ai téléchargé.

Voyez le fichier zippé ci-joint.

Il fallait commencer par nettoyer la liste des villes et la trier avec cette macro :

Code:
Sub Nettoyage()
Dim t, i&
t = [Tablo]
For i = 1 To UBound(t)
t(i, 1) = Application.Trim(t(i, 1)) 'SUPPRESPACE
Next
[Tablo] = t
[Tablo].Sort [Tablo], xlAscending, Header:=xlNo
End Sub
Ensuite créer les listes de validation en colonne E de la 1ère feuille avec cette formule en E2 :

Code:
=DECALER(Tablo;EQUIV(E2&"*";Tablo;0)-1;;NB.SI(Tablo;E2&"*"))
Enfin piloter la colonne E par cette macro :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Set c = Target(1)
If c.Column = 5 Then
  If c <> "" Then _
    If Application.CountIf([Tablo], c & "*") > 1 Then c.Select
  c.EntireColumn.AutoFit
  If c.ColumnWidth < 13 Then c.ColumnWidth = 13
End If
End Sub
Bonne nuit et A+
 

Pièces jointes

  • Saisie semi-automatique(1).zip
    707.8 KB · Affichages: 133
Dernière édition:

job75

XLDnaute Barbatruc
Re : Saisie intuitive semi automatique - A l'aide SVP.

Bonjour Jean Racine, le forum,

Il est intéressant de noter que quand la cellule est vide la liste de validation s'arrête à "ST MAGNE DE CASTILLON".

Du moins chez moi sur Excel 2003.

La liste a donc 32767 éléments, c'est la dimension maximum qu'elle peut avoir.

Bonne journée et A+
 

jcf6464

XLDnaute Occasionnel
Re : Saisie intuitive semi automatique - A l'aide SVP.

Bonjour le forum BOISGONTIER, Jean Racine, job75

Pour job75
Effectivement la liste qu'il à du récupérer est 38948 avec excel 10

sur excel 3 tu ne peut que aller à 32768

Bonne journée jcf64
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Saisie intuitive semi automatique - A l'aide SVP.

Bonsoir,

Saisie intuitive caractère par caractère.

Les noms des villes sont affichés dans la liste déroulante au fur et à mesure de la frappe des caractères.


SaisieIntuitive.gif

Code:
Dim a()
Private Sub UserForm_Initialize()
  a = [listeVilles].Value
  Me.ComboBox1.List = a
End Sub

Private Sub ComboBox1_Change()
  Set d1 = CreateObject("Scripting.Dictionary")
  tmp = UCase(Me.ComboBox1) & "*"
  For Each c In a
    If c Like tmp Then d1(c) = ""
  Next c
  Me.ComboBox1.List = d1.keys
  Me.ComboBox1.DropDown
End Sub

Private Sub CommandButton1_Click()
  ActiveCell = Me.ComboBox1
  Unload Me
End Sub


JB
 

Pièces jointes

  • Racine_Saisie_Intuitive.zip
    647.2 KB · Affichages: 70
  • SaisieIntuitive.gif
    SaisieIntuitive.gif
    20.3 KB · Affichages: 62
  • SaisieIntuitive.gif
    SaisieIntuitive.gif
    20.3 KB · Affichages: 68
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Saisie intuitive semi automatique - A l'aide SVP.

Bonjour,

Autre version avec simulation de Données/Validation.

SaisieIntuitive.gif


Code:
Dim a()
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect([c2:c1000], Target) Is Nothing And Target.Count = 1 Then
    a = Sheets("Villes").Range("listeVilles").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
    'Me.ComboBox1.DropDown    ' ouverture automatique au clic dans la cellule (optionel)
  Else
    Me.ComboBox1.Visible = False
  End If
End Sub

Private Sub ComboBox1_Change()
 If Me.ComboBox1 <> "" Then
   Set d1 = CreateObject("Scripting.Dictionary")
   tmp = UCase(Me.ComboBox1) & "*"
   For Each c In a
     If UCase(c) Like tmp Then d1(c) = ""
   Next c
   Me.ComboBox1.List = d1.keys
   Me.ComboBox1.DropDown
 End If
 ActiveCell.Value = Me.ComboBox1
End Sub

JB
 

Pièces jointes

  • Racine_Saisie_Intuitive2.zip
    693.5 KB · Affichages: 84
  • SaisieIntuitive.gif
    SaisieIntuitive.gif
    34.9 KB · Affichages: 68
  • SaisieIntuitive.gif
    SaisieIntuitive.gif
    34.9 KB · Affichages: 63
Dernière édition:

Jean Racine

XLDnaute Nouveau
Re : Saisie intuitive semi automatique - A l'aide SVP.

Bonjour a tous,

Je reviens vers vous, grace a la bonté de certains d'entre vous (Surtout grace a BOISGOINTIER qui a su me fournir le fichier adéquat que je recherchai)

Seulement je viens de trouver quelque chose a rajouter a mon fichier pour que celui-ci soit simplement parfait a mon gout.

Dans le fichier, j'aimerai que quand j'écris une phrase avec ma combobox dans la colonne C ca m'inscrit directement la phrase souhaité et par la meme occasion différents numéros qui s'afficheront sur la meme ligne mais dans des colonne D E F G H "id_category" en fonction de l'onglet "villes".

En gros que ca donne un Combobox sur 6 colonnes, je ne sais absolument pas si c'est possible ou pas.

Je vous transmet mon fichier ou il y a donc 2 onglets.

Lien de mon fichier compréssé :
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Saisie intuitive semi automatique - A l'aide SVP.

Bonjour

Code:
Dim a()
Private Sub UserForm_Initialize()
  a = [listeVilles].Value
  Me.ComboBox1.List = a
End Sub

Private Sub ComboBox1_Change()
  Set d1 = CreateObject("Scripting.Dictionary")
  tmp = UCase(Me.ComboBox1) & "*"
  For Each c In a
    If c Like tmp Then d1(c) = ""
  Next c
  Me.ComboBox1.List = d1.keys
  Me.ComboBox1.DropDown
End Sub

Private Sub CommandButton1_Click()
  ActiveCell = Me.ComboBox1
  For i = 1 To 6
    p = Application.Match(Me.ComboBox1, a, 0)
    ActiveCell.Offset(, i) = Sheets("villes").Cells(p + 1, i + 1)
  Next i
  Unload Me
End Sub

Jb
 

Pièces jointes

  • Saisie intuitive a modifier.zip
    818.3 KB · Affichages: 57
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 114
Membres
103 121
dernier inscrit
SophieS