comment coder une combobox pour remplir diverses feuilles d'un classeur
26 réponses
raptorus1er
Bonjour,
Tout nouveau sur le forum et dans le codage VBA, je viens vers vous car n'ayant que pour seul méthode d'apprentissage le visionnage et la retranscription de tutoriels vidéos je suis vite perdu dans les termes utilisés.
Après bcp de temps à essayer de comprendre comment créer un formulaire, je suis face à une colle pour mon faible niveau.
Pour la petite explication, j'ai souhaité créer un formulaire car dans mon service, chaque dossier contient une liste mise sous excel, j'ai premièrement rassemblé toutes les listes sur un seul classeur sur diverses feuilles.
De là je me suis lancé sur la création d'un formulaire qui reprend par les textbox toutes les données des diverses listes et une combobox (dans laquelle j'ai listé les diverses feuilles) qui est censée diriger les informations remplies vers la feuille qui aura été sélectionné dans la ComboBox.
et me voilà dans le flou le plus total pour la rédaction d'un code me permettant cette instruction.
Après avoir parcouru les diverses questions, je n'ai pas trouver de solution à mon problème.
Quelqu'un aurait il la possibilité d'orienter mes recherches ou de me guider dans la rédaction du code.
merci à vous
bien cordialement
Bonjour, Dans ton formulaire, j'ai renommé tous les contrôles "Texte" et "Combobox" du nom de l'étiquette au-dessus des contrôles respectifs. Lorsque ces étiquettes ont une appellation de plus d'un mot, le nom (propriété name) des contrôles est le même que l'étiquette + un "_" remplaçant l'espace. Les accents font aussi partie des noms des contrôles. Dans tes feuilles, le nom des étiquettes de colonnes de la ligne 2, doit avoir la même appellation que les étiquettes ou noms des contrôles du formulaire. Cependant, nul besoin d'utiliser le "_" pour remplacer les espaces. Ces étiquettes de colonnes dans plusieurs feuilles ont des noms différents. Je ne les ai pas modifiés, c'est ton travail. Les contrôles "Combobx" ne sont jamais "touchés par la procédure". Quand tu modifies le contenu du combobox "Listing" seulement les contrôles de la feuille contenant le nom des étiquettes de la ligne 2 de la feuille sont activés dans le formulaire. Ton fichier : https://www.cjoint.com/c/HIlrAWyQNdF Observe, tous les noms des "Textbox" débutent par "Txt", celui des combobox par "Cmb" et celui des boutons de commande par "Cmd". En prenant le temps de bien nommer les contrôles, c'est beaucoup plus facile de s'y retrouver lorsque l'on désire insérer du code! MichD "raptorus1er" a écrit dans le message de groupe de discussion : Le vendredi 07 Septembre 2018 à 14:12 par Michd :
Si tu veux ajouter des données (une nouvelle ligne) à un tableau des données, voici un exemple de code. Si tu veux simplement modifier une donnée existante du tableau, ceci est suffisant : With Activesheet 'OU Worksheets("NomFeuille") .Cells(3, 1) = "toto100" End With Ce code ajoute une ligne nouvelle de donnée au tableau. '------------------------------------- Sub Ajouter_New_Data_To_A_Table() Dim Sh As Worksheet Dim T As ListObject, Newrow As ListRow Set Sh = ActiveSheet Set T = Sh.ListObjects("Tableau1") Set Newrow = T.ListRows.Add With Newrow .Range(1) = "...." 'Première colonne nouvelle ligne .Range(2) = "......" 'Deuxième colonne ... .Range(3) = "Ce que tu veux" End With End Sub '------------------------------------- Pour ce qui est des textbox, tu as déjà un exemple. MichD
bonjour, voici mon fichier avec les problèmes qui se posent à moi, à savoir: - enregistrement des informations sur toutes les feuilles de mon classeur - lorsque l'on passe d'une donnée à une autre dans la combobox1, les textboxs qui ont déjà été désactivées ne sont plus actives sans avoir redémarré le formulaire. c'est tout ce qui me pose problème du moins pour le moment :) https://www.cjoint.com/c/HIlhAauYsFc toutes modifications seront les bienvenues pour faciliter l'utilisation de mon projet. merci à vous et bonne journée
bonjour, MichD et bonjour à toutes et tous, après modifications, le bouton de commande ne s'active pas. je te fais suivre le fichier si tu peux me dire d'où vient le problème. Merci https://www.cjoint.com/c/HIoopETxCJc par contre as tu la possibilité de m'expliquer quel est le code pour que les textbox soient activés selon le choix de la cmblisting pcq ça ne se fait pas. sans doute une erreur de ma part.
Le mardi 11 Septembre 2018 à 19:39 par Michd :
> Bonjour,
>
> Dans ton formulaire, j'ai renommé tous les contrôles
> "Texte" et "Combobox" du nom de l'étiquette
> au-dessus des contrôles respectifs. Lorsque ces étiquettes ont une
> appellation de plus d'un mot, le
> nom (propriété name) des contrôles est le même que
> l'étiquette + un "_" remplaçant l'espace. Les
> accents font aussi partie des noms des contrôles.
>
> Dans tes feuilles, le nom des étiquettes de colonnes de la ligne 2, doit
> avoir la même appellation
> que les étiquettes ou noms des contrôles du formulaire. Cependant,
> nul besoin d'utiliser le "_" pour
> remplacer les espaces. Ces étiquettes de colonnes dans plusieurs
> feuilles ont des noms différents.
> Je ne les ai pas modifiés, c'est ton travail.
>
> Les contrôles "Combobx" ne sont jamais "touchés par
> la procédure".
>
> Quand tu modifies le contenu du combobox "Listing" seulement les
> contrôles de la feuille contenant
> le nom des étiquettes de la ligne 2 de la feuille sont activés
> dans le formulaire.
>
> Ton fichier : https://www.cjoint.com/c/HIlrAWyQNdF
>
> Observe, tous les noms des "Textbox" débutent par
> "Txt", celui des combobox par "Cmb" et celui des
> boutons de commande par "Cmd". En prenant le temps de bien nommer les
> contrôles, c'est beaucoup plus
> facile de s'y retrouver lorsque l'on désire insérer du code!
>
> MichD
>
>
>
> "raptorus1er" a écrit dans le message de groupe de discussion
> :
>
>
> Le vendredi 07 Septembre 2018 à 14:12 par Michd :
>> Si tu veux ajouter des données (une nouvelle ligne) à un tableau
>> des données, voici un exemple de
>> code.
>> Si tu veux simplement modifier une donnée existante du tableau, ceci
>> est
>> suffisant :
>>
>> With Activesheet 'OU Worksheets("NomFeuille")
>> .Cells(3, 1) = "toto100"
>> End With
>>
>> Ce code ajoute une ligne nouvelle de donnée au tableau.
>> '-------------------------------------
>> Sub Ajouter_New_Data_To_A_Table()
>> Dim Sh As Worksheet
>> Dim T As ListObject, Newrow As ListRow
>>
>> Set Sh = ActiveSheet
>> Set T = Sh.ListObjects("Tableau1")
>>
>> Set Newrow = T.ListRows.Add
>> With Newrow
>> .Range(1) = "...." 'Première colonne nouvelle ligne
>> .Range(2) = "......" 'Deuxième colonne ...
>> .Range(3) = "Ce que tu veux"
>> End With
>> End Sub
>> '-------------------------------------
>>
>> Pour ce qui est des textbox, tu as déjà un exemple.
>>
>> MichD
>>
> bonjour,
>
> voici mon fichier avec les problèmes qui se posent à moi,
> à savoir:
>
> - enregistrement des informations sur toutes les feuilles de mon classeur
>
> - lorsque l'on passe d'une donnée à une autre dans la combobox1,
> les textboxs
> qui ont déjà été désactivées ne sont
> plus actives sans avoir redémarré le
> formulaire.
>
> c'est tout ce qui me pose problème du moins pour le moment :)
>
> https://www.cjoint.com/c/HIlhAauYsFc
>
> toutes modifications seront les bienvenues pour faciliter l'utilisation de mon
> projet.
>
> merci à vous et bonne journée
bonjour, MichD et bonjour à toutes et tous,
après modifications, le bouton de commande ne s'active pas.
je te fais suivre le fichier si tu peux me dire d'où vient le problème. Merci
https://www.cjoint.com/c/HIoopETxCJc
par contre as tu la possibilité de m'expliquer quel est le code pour que les textbox soient activés selon le choix de la cmblisting pcq ça ne se fait pas. sans doute une erreur de ma part.
Bonjour, Dans ton formulaire, j'ai renommé tous les contrôles "Texte" et "Combobox" du nom de l'étiquette au-dessus des contrôles respectifs. Lorsque ces étiquettes ont une appellation de plus d'un mot, le nom (propriété name) des contrôles est le même que l'étiquette + un "_" remplaçant l'espace. Les accents font aussi partie des noms des contrôles. Dans tes feuilles, le nom des étiquettes de colonnes de la ligne 2, doit avoir la même appellation que les étiquettes ou noms des contrôles du formulaire. Cependant, nul besoin d'utiliser le "_" pour remplacer les espaces. Ces étiquettes de colonnes dans plusieurs feuilles ont des noms différents. Je ne les ai pas modifiés, c'est ton travail. Les contrôles "Combobx" ne sont jamais "touchés par la procédure". Quand tu modifies le contenu du combobox "Listing" seulement les contrôles de la feuille contenant le nom des étiquettes de la ligne 2 de la feuille sont activés dans le formulaire. Ton fichier : https://www.cjoint.com/c/HIlrAWyQNdF Observe, tous les noms des "Textbox" débutent par "Txt", celui des combobox par "Cmb" et celui des boutons de commande par "Cmd". En prenant le temps de bien nommer les contrôles, c'est beaucoup plus facile de s'y retrouver lorsque l'on désire insérer du code! MichD "raptorus1er" a écrit dans le message de groupe de discussion : Le vendredi 07 Septembre 2018 à 14:12 par Michd :
Si tu veux ajouter des données (une nouvelle ligne) à un tableau des données, voici un exemple de code. Si tu veux simplement modifier une donnée existante du tableau, ceci est suffisant : With Activesheet 'OU Worksheets("NomFeuille") .Cells(3, 1) = "toto100" End With Ce code ajoute une ligne nouvelle de donnée au tableau. '------------------------------------- Sub Ajouter_New_Data_To_A_Table() Dim Sh As Worksheet Dim T As ListObject, Newrow As ListRow Set Sh = ActiveSheet Set T = Sh.ListObjects("Tableau1") Set Newrow = T.ListRows.Add With Newrow .Range(1) = "...." 'Première colonne nouvelle ligne .Range(2) = "......" 'Deuxième colonne ... .Range(3) = "Ce que tu veux" End With End Sub '------------------------------------- Pour ce qui est des textbox, tu as déjà un exemple. MichD
bonjour, voici mon fichier avec les problèmes qui se posent à moi, à savoir: - enregistrement des informations sur toutes les feuilles de mon classeur - lorsque l'on passe d'une donnée à une autre dans la combobox1, les textboxs qui ont déjà été désactivées ne sont plus actives sans avoir redémarré le formulaire. c'est tout ce qui me pose problème du moins pour le moment :) https://www.cjoint.com/c/HIlhAauYsFc toutes modifications seront les bienvenues pour faciliter l'utilisation de mon projet. merci à vous et bonne journée
bonjour, MichD et bonjour à toutes et tous, après modifications, le bouton de commande ne s'active pas. je te fais suivre le fichier si tu peux me dire d'où vient le problème. Merci https://www.cjoint.com/c/HIoopETxCJc par contre as tu la possibilité de m'expliquer quel est le code pour que les textbox soient activés selon le choix de la cmblisting pcq ça ne se fait pas. sans doute une erreur de ma part.
Michd
Bonjour, Je joins un fichier que j'avais créé il y a quelques années afin de donner un exemple sur la manière de gérer une plage de données sur une feuille de calcul à partir d'un formulaire. Le fait de gérer ne change pas beaucoup la donne. Comme le nom s'affiche dans le combobox de ton formulaire, tu sais toujours à quelle feuille de calcul il est fait référence. À chaque changement de feuille, il s'agit de recharger le contenu du formulaire. Mon formulaire montre comment retrouver des enregistrements de la feuille, modifier un ou des enregistrements déjà enregistrés, supprimer l'un ou plusieurs enregistrements ou simplement ajouter un nouvel enregistrement. Si tu es débutant en VBA, la compréhension et la réalisation peuvent prendre plusieurs jours. https://www.cjoint.com/c/HIrk3VA1Bz7 En ce qui me concerne, ta question est vague, de quel bouton de commande parles-tu? Qu'est-ce que ce bouton de commande devrait faire? Je n'ai pas le temps ni l'envie de monter ton formulaire en pièce détachée...Il va falloir que tu t'y mettes! MichD
Bonjour,
Je joins un fichier que j'avais créé il y a quelques années afin de donner un exemple sur la manière
de gérer une plage de données sur une feuille de calcul à partir d'un formulaire. Le fait de gérer
ne change pas beaucoup la donne. Comme le nom s'affiche dans le combobox de ton formulaire, tu sais
toujours à quelle feuille de calcul il est fait référence. À chaque changement de feuille, il s'agit
de recharger le contenu du formulaire.
Mon formulaire montre comment retrouver des enregistrements de la feuille, modifier un ou des
enregistrements déjà enregistrés, supprimer l'un ou plusieurs enregistrements ou simplement ajouter
un nouvel enregistrement.
Si tu es débutant en VBA, la compréhension et la réalisation peuvent prendre plusieurs jours.
https://www.cjoint.com/c/HIrk3VA1Bz7
En ce qui me concerne, ta question est vague, de quel bouton de commande parles-tu? Qu'est-ce que ce
bouton de commande devrait faire? Je n'ai pas le temps ni l'envie de monter ton formulaire en pièce
détachée...Il va falloir que tu t'y mettes!
Bonjour, Je joins un fichier que j'avais créé il y a quelques années afin de donner un exemple sur la manière de gérer une plage de données sur une feuille de calcul à partir d'un formulaire. Le fait de gérer ne change pas beaucoup la donne. Comme le nom s'affiche dans le combobox de ton formulaire, tu sais toujours à quelle feuille de calcul il est fait référence. À chaque changement de feuille, il s'agit de recharger le contenu du formulaire. Mon formulaire montre comment retrouver des enregistrements de la feuille, modifier un ou des enregistrements déjà enregistrés, supprimer l'un ou plusieurs enregistrements ou simplement ajouter un nouvel enregistrement. Si tu es débutant en VBA, la compréhension et la réalisation peuvent prendre plusieurs jours. https://www.cjoint.com/c/HIrk3VA1Bz7 En ce qui me concerne, ta question est vague, de quel bouton de commande parles-tu? Qu'est-ce que ce bouton de commande devrait faire? Je n'ai pas le temps ni l'envie de monter ton formulaire en pièce détachée...Il va falloir que tu t'y mettes! MichD
Michd
Une suggestion, pour quoi ne pas utiliser une seule feuille de calcul pour entrer, modifier, supprimer des données. Rien ne t'empêche de créer sur les autres feuilles, divers tableaux croisés dynamiques avec les champs désirés. Dès que tu modifies la base de données de la première feuille, tous les TDC se mettent à jour. C'est plus simple comme gestion. MichD
Une suggestion, pour quoi ne pas utiliser une seule feuille de calcul pour entrer, modifier,
supprimer des données. Rien ne t'empêche de créer sur les autres feuilles, divers tableaux croisés
dynamiques avec les champs désirés. Dès que tu modifies la base de données de la première feuille,
tous les TDC se mettent à jour. C'est plus simple comme gestion.
Une suggestion, pour quoi ne pas utiliser une seule feuille de calcul pour entrer, modifier, supprimer des données. Rien ne t'empêche de créer sur les autres feuilles, divers tableaux croisés dynamiques avec les champs désirés. Dès que tu modifies la base de données de la première feuille, tous les TDC se mettent à jour. C'est plus simple comme gestion. MichD
raptorus1er
Le mardi 18 Septembre 2018 à 16:28 par Michd :
Une suggestion, pour quoi ne pas utiliser une seule feuille de calcul pour entrer, modifier, supprimer des données. Rien ne t'empêche de créer sur les autres feuilles, divers tableaux croisés dynamiques avec les champs désirés. Dès que tu modifies la base de données de la première feuille, tous les TDC se mettent à jour. C'est plus simple comme gestion. MichD
bonjour MichD la question que je te posais c'est pourquoi le cmdSave (bouton enregistrer bleu) n'est pas actif lors de la sélection d'un des choix de la cmblisting? le CmbSave se grise automatiquement et ne se réactive pas même lorsque tous les champs sont remplis. après il y avait la 2nde question qui était : à quoi correspond cette commande et comment la réajuster car des txtbox sont manquant? je ne te demande pas de tout faire à ma place bien au contraire car j'ai envie de tout faire moi même mais une petite explication me permettra de modifier ce que je dois. j'ai compris qu'il y a le changement de couleur des txtboxs non utilisés par la sélection d'un élément de cmblisting mais comment intégrer les éléments manquants? (txtdate_départ et txtdate_retour par exemple pour le choix OTV dans cmbListing) 'désactivation des TextBoxs inutiles lors de la sélection de la feuille dans CmbListing Private Sub CmbListing_Change() Dim Rg As Range, T As Variant, Elt As Variant Dim C As Control, A As Long, B As Long, X As Long If Me.CmbListing <> "" Then With Worksheets(Me.CmbListing.Value) .Activate X = Range("A1").CurrentRegion.Columns.Count T = .Range("A2").Resize(, X).Value 'T = Rg.Value For A = 1 To UBound(T, 1) For B = 1 To UBound(T, 2) T(A, B) = Replace(T(A, B), " ", "_") Select Case LCase(T(A, B)) Case Is = "Listing", "Agent", "Date_Des_Faits", "Type_De_procédure", "Nature_De_La_Fourrière" T(A, B) = "Cmb" & T(A, B) Case Else T(A, B) = Replace(T(A, B), "_", "") T(A, B) = "Txt" & T(A, B) End Select Next Next End With For Each C In Me.Controls If Left(C.Name, 5) <> "Label" Then If Not IsError(Application.Match(C.Name, T, 0)) Then C.Enabled = True C.BackColor = &H80000005 Else If Left(C.Name, 3) <> "Cmb" Then C.Enabled = False C.BackColor = &HC0C0C0 End If End If End If Next End If End Sub merci à toi
Le mardi 18 Septembre 2018 à 16:28 par Michd :
> Une suggestion, pour quoi ne pas utiliser une seule feuille de calcul pour
> entrer, modifier,
> supprimer des données. Rien ne t'empêche de créer sur les
> autres feuilles, divers tableaux croisés
> dynamiques avec les champs désirés. Dès que tu modifies
> la base de données de la première feuille,
> tous les TDC se mettent à jour. C'est plus simple comme gestion.
>
> MichD
bonjour MichD
la question que je te posais c'est pourquoi le cmdSave (bouton enregistrer bleu) n'est pas actif lors de la sélection d'un des choix de la cmblisting?
le CmbSave se grise automatiquement et ne se réactive pas même lorsque tous les champs sont remplis.
après il y avait la 2nde question qui était :
à quoi correspond cette commande et comment la réajuster car des txtbox sont manquant?
je ne te demande pas de tout faire à ma place bien au contraire car j'ai envie de tout faire moi même mais une petite explication me permettra de modifier ce que je dois.
j'ai compris qu'il y a le changement de couleur des txtboxs non utilisés par la sélection d'un élément de cmblisting mais comment intégrer les éléments manquants? (txtdate_départ et txtdate_retour par exemple pour le choix OTV dans cmbListing)
'désactivation des TextBoxs inutiles lors de la sélection de la feuille dans CmbListing
Private Sub CmbListing_Change()
Dim Rg As Range, T As Variant, Elt As Variant
Dim C As Control, A As Long, B As Long, X As Long
If Me.CmbListing <> "" Then
With Worksheets(Me.CmbListing.Value)
.Activate
X = Range("A1").CurrentRegion.Columns.Count
T = .Range("A2").Resize(, X).Value
'T = Rg.Value
For A = 1 To UBound(T, 1)
For B = 1 To UBound(T, 2)
T(A, B) = Replace(T(A, B), " ", "_")
Select Case LCase(T(A, B))
Case Is = "Listing", "Agent", "Date_Des_Faits", "Type_De_procédure", "Nature_De_La_Fourrière"
T(A, B) = "Cmb" & T(A, B)
Case Else
T(A, B) = Replace(T(A, B), "_", "")
T(A, B) = "Txt" & T(A, B)
End Select
Next
Next
End With
For Each C In Me.Controls
If Left(C.Name, 5) <> "Label" Then
If Not IsError(Application.Match(C.Name, T, 0)) Then
C.Enabled = True
C.BackColor = &H80000005
Else
If Left(C.Name, 3) <> "Cmb" Then
C.Enabled = False
C.BackColor = &HC0C0C0
End If
End If
End If
Next
End If
End Sub
merci à toi
Une suggestion, pour quoi ne pas utiliser une seule feuille de calcul pour entrer, modifier, supprimer des données. Rien ne t'empêche de créer sur les autres feuilles, divers tableaux croisés dynamiques avec les champs désirés. Dès que tu modifies la base de données de la première feuille, tous les TDC se mettent à jour. C'est plus simple comme gestion. MichD
bonjour MichD la question que je te posais c'est pourquoi le cmdSave (bouton enregistrer bleu) n'est pas actif lors de la sélection d'un des choix de la cmblisting? le CmbSave se grise automatiquement et ne se réactive pas même lorsque tous les champs sont remplis. après il y avait la 2nde question qui était : à quoi correspond cette commande et comment la réajuster car des txtbox sont manquant? je ne te demande pas de tout faire à ma place bien au contraire car j'ai envie de tout faire moi même mais une petite explication me permettra de modifier ce que je dois. j'ai compris qu'il y a le changement de couleur des txtboxs non utilisés par la sélection d'un élément de cmblisting mais comment intégrer les éléments manquants? (txtdate_départ et txtdate_retour par exemple pour le choix OTV dans cmbListing) 'désactivation des TextBoxs inutiles lors de la sélection de la feuille dans CmbListing Private Sub CmbListing_Change() Dim Rg As Range, T As Variant, Elt As Variant Dim C As Control, A As Long, B As Long, X As Long If Me.CmbListing <> "" Then With Worksheets(Me.CmbListing.Value) .Activate X = Range("A1").CurrentRegion.Columns.Count T = .Range("A2").Resize(, X).Value 'T = Rg.Value For A = 1 To UBound(T, 1) For B = 1 To UBound(T, 2) T(A, B) = Replace(T(A, B), " ", "_") Select Case LCase(T(A, B)) Case Is = "Listing", "Agent", "Date_Des_Faits", "Type_De_procédure", "Nature_De_La_Fourrière" T(A, B) = "Cmb" & T(A, B) Case Else T(A, B) = Replace(T(A, B), "_", "") T(A, B) = "Txt" & T(A, B) End Select Next Next End With For Each C In Me.Controls If Left(C.Name, 5) <> "Label" Then If Not IsError(Application.Match(C.Name, T, 0)) Then C.Enabled = True C.BackColor = &H80000005 Else If Left(C.Name, 3) <> "Cmb" Then C.Enabled = False C.BackColor = &HC0C0C0 End If End If End If Next End If End Sub merci à toi
Michd
Voici le fichier modifié. https://www.cjoint.com/c/HIvqJduIXv7 J'ai modifié la macro pour exclure les boutons de commande, j'ai mis une note à cet effet dans le module du formulaire. | car des txtbox sont manquant? **** Je sais. Tu n'as qu'à les ajouter. L'IMPORTANT, leur leur à ces textbox doit débuter par "Txt" suivi du nom de champ que tu utilises dans la feuille de calcul où il apparaît. Tous les noms de tes textbox portent un nom reflétant cela. Tu as suffisamment d'exemples sous les yeux pour constater comment j'ai procédé. Tu n'as pas à modifier le code, il va s'adapter, peu importe le nombre de textbox que tu ajouteras, et ce, pourvu que tu leurs données un nom tel que convenu. Ce que je voulais lors du message précédent, ce n'est pas à moi de déterminer quels champs doivent être ajoutés et dans quelle feuille. Cette section du code s'occupe simplement du traitement des noms des contrôles afin qu'il y ait concordance entre les noms des champs des feuilles de calcul et le nom donné aux contrôles. Exemple : a) Ajouter les "txt" au début des champs représentant un champ texte... b) enlever les espaces de noms des champs dans la feuille de calcul... Le but , boucler dans la deuxième section de la procédure sur tous les contrôles du textbox. Cette ligne de code requiert le nom de chaque contrôle baptisé dans le formulaire. If Not IsError(Application.Match(C.Name, T, 0)) Then Voilà. MichD
Voici le fichier modifié. https://www.cjoint.com/c/HIvqJduIXv7
J'ai modifié la macro pour exclure les boutons de commande, j'ai mis une note à cet effet dans le
module du formulaire.
| car des txtbox sont manquant?
**** Je sais. Tu n'as qu'à les ajouter. L'IMPORTANT, leur leur à ces textbox doit débuter par "Txt"
suivi du nom de champ que tu utilises dans la feuille de calcul où il apparaît. Tous les noms de tes
textbox portent un nom reflétant cela. Tu as suffisamment d'exemples sous les yeux pour constater
comment j'ai procédé. Tu n'as pas à modifier le code, il va s'adapter, peu importe le nombre de
textbox que tu ajouteras, et ce, pourvu que tu leurs données un nom tel que convenu.
Ce que je voulais lors du message précédent, ce n'est pas à moi de déterminer quels champs doivent
être ajoutés et dans quelle feuille.
Cette section du code s'occupe simplement du traitement des noms des contrôles afin qu'il y ait
concordance entre les noms des champs des feuilles de calcul et le nom donné aux contrôles.
Exemple :
a) Ajouter les "txt" au début des champs représentant un champ texte...
b) enlever les espaces de noms des champs dans la feuille de calcul...
Le but , boucler dans la deuxième section de la procédure sur tous les contrôles du textbox. Cette
ligne de code requiert le nom de chaque contrôle baptisé dans le formulaire.
If Not IsError(Application.Match(C.Name, T, 0)) Then
Voici le fichier modifié. https://www.cjoint.com/c/HIvqJduIXv7 J'ai modifié la macro pour exclure les boutons de commande, j'ai mis une note à cet effet dans le module du formulaire. | car des txtbox sont manquant? **** Je sais. Tu n'as qu'à les ajouter. L'IMPORTANT, leur leur à ces textbox doit débuter par "Txt" suivi du nom de champ que tu utilises dans la feuille de calcul où il apparaît. Tous les noms de tes textbox portent un nom reflétant cela. Tu as suffisamment d'exemples sous les yeux pour constater comment j'ai procédé. Tu n'as pas à modifier le code, il va s'adapter, peu importe le nombre de textbox que tu ajouteras, et ce, pourvu que tu leurs données un nom tel que convenu. Ce que je voulais lors du message précédent, ce n'est pas à moi de déterminer quels champs doivent être ajoutés et dans quelle feuille. Cette section du code s'occupe simplement du traitement des noms des contrôles afin qu'il y ait concordance entre les noms des champs des feuilles de calcul et le nom donné aux contrôles. Exemple : a) Ajouter les "txt" au début des champs représentant un champ texte... b) enlever les espaces de noms des champs dans la feuille de calcul... Le but , boucler dans la deuxième section de la procédure sur tous les contrôles du textbox. Cette ligne de code requiert le nom de chaque contrôle baptisé dans le formulaire. If Not IsError(Application.Match(C.Name, T, 0)) Then Voilà. MichD
Michd
"Michd" a écrit dans le message de groupe de discussion : po37lm$8ls$ Voici le fichier modifié. https://www.cjoint.com/c/HIvqJduIXv7 J'ai modifié la macro pour exclure les boutons de commande, j'ai mis une note à cet effet dans le module du formulaire. | car des txtbox sont manquant? **** Je sais. Tu n'as qu'à les ajouter. L'IMPORTANT, leur leur à ces textbox doit débuter par "Txt" suivi du nom de champ que tu utilises dans la feuille de calcul où il apparaît. Tous les noms de tes textbox portent un nom reflétant cela. Tu as suffisamment d'exemples sous les yeux pour constater comment j'ai procédé. Tu n'as pas à modifier le code, il va s'adapter, peu importe le nombre de textbox que tu ajouteras, et ce, pourvu que tu leurs données un nom tel que convenu. Ce que je voulais lors du message précédent, ce n'est pas à moi de déterminer quels champs doivent être ajoutés et dans quelle feuille. Cette section du code s'occupe simplement du traitement des noms des contrôles afin qu'il y ait concordance entre les noms des champs des feuilles de calcul et le nom donné aux contrôles. Exemple : a) Ajouter les "txt" au début des champs représentant un champ texte... b) enlever les espaces de noms des champs dans la feuille de calcul... Le but , boucler dans la deuxième section de la procédure sur tous les contrôles du textbox. Cette ligne de code requiert le nom de chaque contrôle baptisé dans le formulaire. If Not IsError(Application.Match(C.Name, T, 0)) Then '-------------------------------------------------------- For A = 1 To UBound(T, 1) For B = 1 To UBound(T, 2) T(A, B) = Replace(T(A, B), " ", "_") Select Case LCase(T(A, B)) Case Is = "Listing", "Agent", "Date_Des_Faits", "Type_De_procédure", "Nature_De_La_Fourrière" T(A, B) = "Cmb" & T(A, B) Case Else T(A, B) = Replace(T(A, B), "_", "") T(A, B) = "Txt" & T(A, B) End Select Next Next '-------------------------------------------------------- MichD
"Michd" a écrit dans le message de groupe de discussion : po37lm$8ls$1@gioia.aioe.org...
Voici le fichier modifié. https://www.cjoint.com/c/HIvqJduIXv7
J'ai modifié la macro pour exclure les boutons de commande, j'ai mis une note à cet effet dans le
module du formulaire.
| car des txtbox sont manquant?
**** Je sais. Tu n'as qu'à les ajouter. L'IMPORTANT, leur leur à ces textbox doit débuter par "Txt"
suivi du nom de champ que tu utilises dans la feuille de calcul où il apparaît. Tous les noms de tes
textbox portent un nom reflétant cela. Tu as suffisamment d'exemples sous les yeux pour constater
comment j'ai procédé. Tu n'as pas à modifier le code, il va s'adapter, peu importe le nombre de
textbox que tu ajouteras, et ce, pourvu que tu leurs données un nom tel que convenu.
Ce que je voulais lors du message précédent, ce n'est pas à moi de déterminer quels champs doivent
être ajoutés et dans quelle feuille.
Cette section du code s'occupe simplement du traitement des noms des contrôles afin qu'il y ait
concordance entre les noms des champs des feuilles de calcul et le nom donné aux contrôles.
Exemple :
a) Ajouter les "txt" au début des champs représentant un champ texte...
b) enlever les espaces de noms des champs dans la feuille de calcul...
Le but , boucler dans la deuxième section de la procédure sur tous les contrôles du textbox. Cette
ligne de code requiert le nom de chaque contrôle baptisé dans le formulaire.
If Not IsError(Application.Match(C.Name, T, 0)) Then
'--------------------------------------------------------
For A = 1 To UBound(T, 1)
For B = 1 To UBound(T, 2)
T(A, B) = Replace(T(A, B), " ", "_")
Select Case LCase(T(A, B))
Case Is = "Listing", "Agent", "Date_Des_Faits",
"Type_De_procédure", "Nature_De_La_Fourrière"
T(A, B) = "Cmb" & T(A, B)
Case Else
T(A, B) = Replace(T(A, B), "_", "")
T(A, B) = "Txt" & T(A, B)
End Select
Next
Next
'--------------------------------------------------------
"Michd" a écrit dans le message de groupe de discussion : po37lm$8ls$ Voici le fichier modifié. https://www.cjoint.com/c/HIvqJduIXv7 J'ai modifié la macro pour exclure les boutons de commande, j'ai mis une note à cet effet dans le module du formulaire. | car des txtbox sont manquant? **** Je sais. Tu n'as qu'à les ajouter. L'IMPORTANT, leur leur à ces textbox doit débuter par "Txt" suivi du nom de champ que tu utilises dans la feuille de calcul où il apparaît. Tous les noms de tes textbox portent un nom reflétant cela. Tu as suffisamment d'exemples sous les yeux pour constater comment j'ai procédé. Tu n'as pas à modifier le code, il va s'adapter, peu importe le nombre de textbox que tu ajouteras, et ce, pourvu que tu leurs données un nom tel que convenu. Ce que je voulais lors du message précédent, ce n'est pas à moi de déterminer quels champs doivent être ajoutés et dans quelle feuille. Cette section du code s'occupe simplement du traitement des noms des contrôles afin qu'il y ait concordance entre les noms des champs des feuilles de calcul et le nom donné aux contrôles. Exemple : a) Ajouter les "txt" au début des champs représentant un champ texte... b) enlever les espaces de noms des champs dans la feuille de calcul... Le but , boucler dans la deuxième section de la procédure sur tous les contrôles du textbox. Cette ligne de code requiert le nom de chaque contrôle baptisé dans le formulaire. If Not IsError(Application.Match(C.Name, T, 0)) Then '-------------------------------------------------------- For A = 1 To UBound(T, 1) For B = 1 To UBound(T, 2) T(A, B) = Replace(T(A, B), " ", "_") Select Case LCase(T(A, B)) Case Is = "Listing", "Agent", "Date_Des_Faits", "Type_De_procédure", "Nature_De_La_Fourrière" T(A, B) = "Cmb" & T(A, B) Case Else T(A, B) = Replace(T(A, B), "_", "") T(A, B) = "Txt" & T(A, B) End Select Next Next '-------------------------------------------------------- MichD