VBA et formulaire

Bonjour à tous,

Je coince sur l'écriture du VBA d'un formulaire.

Voici ce que je veux réaliser:

J'ai ma ComboBox1, elle doit me proposer une liste nommée "Liste_N°Forêt" qui se situe dans l'onglet "Listes".

Cette ComboBox devra modifier la cellule B3 de mon onglet "Hypothèses".

Je n'arrive pas à avoir la liste déroulante avec le code suivant:

Private Sub CommandButton1_Click()

Range("A3") = TextBox1.Value

Range("A4") = ComboBox1.RowSource =("Liste_N°Forêt").Address

Unload Me

Endwith

Le deuxième problème réside dans le fait que j'ai utilisé la fonction =indirect($C$3) dans la validation de données pour avoir une liste de numéros de forêt qui puisse correspondre au N° de GF (Un GF étant une société qui détient plusieurs forêts). C'est en fait une validation de données en cascade. Je voudrais que cette validation de données en cascade soit prise en compte dans mon formulaire.

Pouvez-vous m'aider?

Merci

Bonjour Bessedela, bonjour le forum,

Pas sûr d'avoir tout compris...

Si tu veux alimenter ta ComboBox1 avec une plage nommée Liste_NºForêt,

Me.ComboBox1.List = Range("Liste_NºForêt").Value

J'évite toujours la propriété [RowRource] source de problèmes...

Pour renvoyer l'élément choisi dans la ComboBox1 vers la la cellule B3

Range("B3").Value = Me.ComboBox1.Value

Merci ThauThème,

Bon j'ai opté pour la solution fichier. C'est un peu compliqué d'expliquer sans visuel.

Tu trouveras en pièce jointe mon fichier. Je n'ai pas encore créé de bouton pour lancer le formulaire donc il faut le retrouver dans "Visual Basic".

J'ai des difficultés avec les menus déroulants pour le N°de GF (B3) et le N° de Forêt (D3) ces deux cases sont des menus déroulants et la validation de données est en cascade. Les données renseignées dans l'outil validation de données sont dans l'onglet "Listes".

Ensuite il y a les menus déroulants pour les types d'amortissement (B50:B56) toutes les cases doivent proposer la même liste.

Les menus déroulants pour le type de subvention (B73:B79) qui doit également proposer la même liste pour chaque ligne.

Pour terminer, les cases blanches doivent être renseignées par des chiffres ou des dates, cependant, quand je lance ma macro les cases sont réinitialisées, hors je voudrais plutôt conserver les données et pouvoir en modifier une sans avoir à tout retaper dès que je lance ma macro.

Je me tiens à ta disposition pour plus d'information.

PS: je suis vraiment débutant en VBA...

Re,

Copie le code ci-dessous dans ta UserForm2 :

Private L As Worksheet 'déclare la variable L (onglet liste)
Private H As Worksheet 'déclare la variable H (onglet Hypothèses)

Private Sub UserForm_Initialize() 'à l'initilisation de l'UserForm
Dim DC As Integer 'déclare la variable DC (Dernière Colonne)

Set L = Worksheets("Listes") 'définit l'onglet L
Set H = Worksheets("Hypothèses") 'définit l'onglet H
DC = L.Cells(112, 2).End(xlToRight).Column 'définit la dernière colonne éditée DC de la ligne 112
Me.ComboBox1.List = Application.Transpose(L.Range(L.Cells(112, 3), L.Cells(112, DC)).Value) 'alimente la ComboBox1 avec les valeurs de la plage allant des colonnes 3 à DC de la ligne 112
End Sub

Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Dim COL As Byte 'déclare la variable COL

Me.ComboBox2.Clear 'vide la ComboBox2
If Me.ComboBox1.Value = "" Then Exit Sub 'si la ComboBox1 est effacée, sort de la procédure
COL = Me.ComboBox1.ListIndex + 3 'récupère le numéro de colonne de l'élément sélectionné
Me.ComboBox2.List = L.Range(L.Cells(114, COL), L.Cells(112, COL).End(xlDown)).Value 'alimente la ComboBox2 avec la plage allant de la ligne 114 à la dernière ligne éditée de la colonne COL
End Sub

Merci!

J'ai cependant un soucis,

Me.N°Forêt.List = L.Range(L.Cells(114, COL), L.Cells(112, COL).End(xlDown)).Value

Cette ligne est surlignée en jaune. Je ne comprend pas pourquoi. J'ai remplacé les noms des ComboBox. Ca coince à cet endroit.

Merci pour ton aide

Re,

Pourquoi avoir remplacer le nom de la ComboBox2 ? Ça marchait très bien comme ça !...

Je ne peux pas te répondre sans le fichier modifié !...

Merci! Effectivement ça fonctionne. Sauf que je n'arrive pas à valider les données.

J'avais vu quelque part : Unload me mais ça ne fonctionne pas...

Pour le reste des cellules, sans menu déroulant, j'avais écrit :

Private Sub CommandButton1_Click()

Range("D73") = TextBox60.Value

Range("D74") = TextBox61.Value

Range("D75") = TextBox62.Value

Range("D76") = TextBox63.Value

Range("D77") = TextBox64.Value

Range("D78") = TextBox65.Value

Range("D79") = TextBox66.Value

Unload Me

End Sub

J'ai écris une ligne par cellule à remplir... Après quoi je valide et les données sont effectivement rentrées dans ma feuille.

En réalité ce que je voulais c'est juste pouvoir cliquer sur le bouton, que le formulaire s’affiche avec les paramètres actuels et que je puisse modifier certains paramètres. Or avec ce code, quand je clique sur formulaire, je dois rentrer à nouveau toutes les données deuxième problème.

Enfin, je n'arrive pas à faire en sorte que mon bouton "Modifier" de l'onglet "Hypothèses" me fasse apparaître mon formulaire.

Bonjour Bessedela, bonjour le forum,

Je ne retrouve plus le fichier joint et sans lui je ne peux pas t'aider !...

Bonjour ThauThème,

J'ai résolu ce problème...

Merci pour ton aide!!

Par contre j'ai encore des soucis avec les formats de mes textbox.

J'ai créé un nouveau sujet.

https://forum.excel-pratique.com/excel/imposer-un-format-textbox-t91808.html

Je te remercie encore une fois!

Rechercher des sujets similaires à "vba formulaire"