XL 2016 Problème de VBA

Senlis

XLDnaute Nouveau
Bonsoir à tous,

Je suis en train commencer l'apprentissage du VBA dans Excel.
Mon projet à pour but de créer un formulaire permettant de saisir une base donnée client.

Or, j'ai deux soucis :
1. dans le code postale et les téléphone, le message d'erreur apparait à chaque fois
2. je ne sais pas comment faire une ComboBox dépendante

1. TextBox restreint aux chiffres
Il s'agit du code postal et des téléphones

2. ComboBox catégorie
Je souhaite que lorsque que l'on choisit un item dans "Catégorie" cela fasse apparaitre les sous-catégorie dans la deuxième puis troisième ComboBox.
Je m'arrache les cheveux depuis 2 jours en cherchant sur le net mais rien n'y fait.

En pièce-jointe le fichier concerné.

Si vos lumières permettent de résoudre le problème, je pourrai dire 'Et la lumière fût !'.
 

Pièces jointes

  • PRODUCTION - Base de données.xlsm
    2.9 MB · Affichages: 63

Dranreb

XLDnaute Barbatruc
Si vous déclarez Private TVilles(0 To 500, 1 To 4) en tête de l'UserForm vous aurez à votre disposition un tableau en mémoire dans lequel vous pourrez ranger 500 villes trouvées pour un code postal.
L'accès à un élément de tableau est des dizaines de milliers de fois plus rapide qu'un accès à une cellule. Voire à 10000 cellules d'ailleurs, c'est pareil que pour une seule cellule: c'est lent. Mais du coup il faut toujours accéder le moins souvent possible aux plages de cellules, et tout charger et décharger d'un coup dans des tableaux dynamiques. Si vous voulez déclarer un tableau dynamique, ne précisez pas les dimensions, juste les parenthèses: Private TVilles()
À la limite TVille = Feuil3.ListObjects(1).DataBodyRange.Value pour charger toutes les villes en mémoire, point barre.
 
Dernière édition:

Senlis

XLDnaute Nouveau
Bonjour Draneb,

Je comprends ta réponse mais je ne vois pas du tout comment faire pour "mettre en mémoire".
Et après Private TVilles(0 To 500, 1 To 4) il faut mettre quoi ?
C'est quoi TVilles ?

J'ai cherché des réponses sur le net mais je ne trouve d'explication concernant ta réponse.

Comment faire ? Peux-tu me montrer un exemple pour que je puisse ensuite adapter dans mon projet ?
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Pas eu envie de me casser la tête. Mis un ComboBoxLiées pour ça.
C'est un peu long au chargement, mais ensuite, si vous prenez soin de ne faire de Unload Me que pour finir de travailler la dessus, ce sera toujours rapide.
 

Pièces jointes

  • CBxLiéesSenlis.xlsm
    3.7 MB · Affichages: 90

Discussions similaires

Statistiques des forums

Discussions
312 239
Messages
2 086 495
Membres
103 236
dernier inscrit
Menni