bonjour peut on utiliser un bouton dans un formulaire pour remplir les textbox de ce formulaire
je m explique dans le formulaire il y a 7 textbox je les remplis j appuie sur ajouter ca s ajoute dans la feuil1
avec le combobox je choisis ce nom que j ai remplie précédemment
tous les renseignement s affiche correctement a cote d un textbox il y a un bouton je voudrais que quand j appuie sur ce bouton il remplie les textbox qui correspondent a cette ligne
merci de votre aide
phv
Bonsoir.
Je n'ai pas encore ouvert votre classeur.
Mais avec le projet CLsCAs du complément CBxLCtlA.xlam tout ce que vous décrivez peut se faire automatiquement avec un minimum de programmation dans l'UserForm.
À un détail près toutefois par rapport à ce que vous dites : la saisie d'un nouvel élément se fait aussi, non pas dans une TextBox mais obligatoirement dans la même ComboBox que celle où vous le rechercherez ultérieurement. La recherche est en effet obligatoire pour éviter les doublons. Ce n'est pas vous qui décidez si vous aller créer ou modifier, c'est lui qui vous le dira après que vous aurez tapé ce dont il s'agit.
En outre il est conçu pour accepter plusieurs ComboBox correspondant à des colonnes différentes de la base et c'est la combinaison de l'ensemble qu'il considère, en ne proposant dans les listes de celle à renseigner que ce qui existe de compatible avec celles déjà renseignées.
Définit deux types d'objets à évènements: ComboBoxLiées prenant en charge les ComboBox pour la saisie des données d'identification de la ligne à créer, puis, ultérieurement, à consulter voire modifier, et ControlsAssociés prenant en charge les...
www.excel-downloads.com
Il est souhaitable que la plage à mettre à jour ait subi une mise sous forme de tableau.
Désolé pour mon interférence. Juste une question à Soan. Dans la procédure ci-dessous, Pourquoi la variable T en variant implicitement et pas T() en tant qu''array.
VB:
Private Sub UserForm_Initialize() 'initialisation de UserForm1
Dim T, n& 'ATTENTION : il ne faut PAS mettre de type pour T !
Set Ws = Worksheets("Feuil1") 'Ws fait référence à la feuille de calcul "Feuil1"
n = Ws.Cells(Rows.Count, 1).End(3).Row: If n = 1 Then Exit Sub
n = n - 1: T = Ws.[A2].Resize(n): ComboBox1.List = T: flag = 0
End Sub
ouvre le formulaire, et clique sur le bouton go père ➯ ça fait rien, et c'est normal, car le champ père est vide ; dans la liste déroulante, sélectionne Alain ➯ à gauche, ça remplit les 7 TextBox ; question : QUI est le père d'Alain ? réponse : c'est Alex, car c'est bien lui que tu vois dans le champ père ; clique sur le bouton go père ➯ ça montre les infos du père d'Alain qui est Alex ! attends, c'est pas fini ! QUI est le père d'Alex ? c'est Daniel, n'est-ce pas ? clique sur le bouton go père ➯ ça fait rien, et c'est normal, car dans la liste des personnes, il n'y a pas de Daniel ! il n'a pas été trouvé : If cel Is Nothing Then Exit Sub
Merci @soan de l'explication
J'avais crée plein de noms mais vu qu'ils n'avaient aucun lien entre eux cela ne fonctionnaient jamais...
Je suis pas réveillé ce matin je vais faire du jardin cela me réveillera un peu.....
je viens d'essayer ; effectivement, ça marche ; mais T() est tout d'même un tableau sans type défini, donc c'est toujours un tableau de type Variant (j'ai pas pensé à en parler dans mon post #7 à @cp4) ; tout en laissant T = Ws.[A2].Resize(n).Value j'ai essayé avec Dim T$() et Dim T() As String mais ça retombe sur l'erreur n° 13 d'incompatibilité de type !
de mettre Dim T()et.Value plutôt que Dim Tsans .Value y'a quel(s) avantage(s) ? car finalement, dans les 2 cas, c'est un tableau de type Variant.
edit : non, c'est plutôt ça : avec Dim T, c'est une variable de type Variant qui va contenir un tableau ; avec DimT(), c'est un tableau de plusieurs variants ; mais lequel des deux est mieux ?
@Phil : bon jardinage ! (tu vas tondre la pelouse ? ou faire pousser des légumes et des fruits ? ou des fleurs ?)
J'ai posé la question car j'avoue que je ne maîtrise pas parfaitement la manipulation des Arrays.
Je me mêle les pinceaux. En effet, si j'ai bien compris un array 1D comme à zéro.
Dans ce fichier, dans les 2 cas [ Dim T ou Dim T() ] c'est un array 2D.
C'est ce qui me chiffonne, je n'arrive pas à anticiper le Lbound d'un tableau 1D (0 ou 1).
Merci à vous deux.
Bon dimanche.
Dans le premier cas Dim T et et T = Ws.[A2].Resize(n), VBA voit à gauche de l'affectation n'importe quoi (un variant qui n'a pas de type de base et ne sera défini que lorsqu'on lui affecte quelque chose). A droite un objet. Il prend la valeur par défaut de l'objet (un tableau de valeur - sauf si élément unique) puis construit T comme un tableau puisqu'il doit y affecter un tableau.
Dans le cas Dim T() et T = Ws.[A2].Resize(n), VBA a une affectation où à gauche il y a une variable typée de type tableau et à droite une structure typée objet. Ce sont deux types différents: pour VBA ça ne colle pas ==> Les types de gauche et de droite diffèrent.
merci pour tes infos ; cependant, comme y'a pas vraiment d'avantage, je continuerai comme j'ai fait au début, avec Dim T et sans.Value : c'est plus court à lire et a écrire, et ça marche bien aussi.
je mets quand même un "J'aime" sur ton post #9, pour ton info complémentaire.