Bouton d'option (activeX) qui fait effet sur 2 feuilles

Résolu/Fermé
Magen_879 Messages postés 1 Date d'inscription jeudi 19 janvier 2023 Statut Membre Dernière intervention 19 janvier 2023 - 19 janv. 2023 à 18:25
 Magen_879 - 25 janv. 2023 à 18:49

Bonjour a tous, 

Je suis assez débutante niveau VBA, et ce que je tente de faire surpasse de beaucoup ma compréhension et capacité :)

j'ai un fichier Excel qui sert de contrat et j'ai réussit a créé un module qui change la langue du formulaire grâce a un bouton d'option. Ca marche super bien pour ca.

Par contre cette première feuille est lié a une autre (un offre d'achat qui se transforme en contrat) il sont sur 2 feuilles différentes car il n'ont pas la même mise en page.

Ce que j'aimerais réussir c'est que le bouton de langue de la feuille ''Offre d'achat'' change la langue de cette feuille (jusque la pas de problème) mais aussi la langue de la feuille ''Contrat''. Ce que je n'arrive pas a faire.

J'ai fait plusieurs tests dans un autre fichier moins chargé, et il semble que le code ne prend pas réellement en compte le nom de la feuille, mais fait seulement effet sur la feuille ou se trouve les boutons...

Est ce que c'est possible ce que je veux faire??

j'avais trouvé une belle solution a mon problème en créant 2 autres bouton d'options sur ma feuille ''contrat'' qui était codé pour être activé par les bouton de la feuille ''Offre d'achat'' mais ce n'était pas un vrai clic donc le code du module de fonctionnait pas.

Donc je me dis que je pourrait initier le changement de langue en fonction de la valeur d'une cellule (ex: j'ai une case liée a un bouton et écrit vrai quand Français et faux quand c'est anglais) mais je ne comprend pas comment je pourrait écrire cette commande...

est ce que quelqu'un est en mesure de me donner une piste de solution?

Merci a l'avance :)


Windows / Chrome 108.0.0.0

A voir également:

4 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
20 janv. 2023 à 17:18

Bonjour,

Vous pouvez montrer le code que vous utilisez?

0

Bonjour, merci de votre réponse, je peux vous mettre un extrait de mon module de langue qui est lié a mes boutons d'options.

J'ai fait des tests aussi dans un nouveau fichier et le bouton semble seulement faire effet sur sa feuille, même si je spécifie Feuil2 par exemple.

Public Langue As String


Sub btnFrancais_Cliquer()
Langue = "Fr"
Rempli_Feuil_Feuil1
End Sub

Sub btnAnglais_Cliquer()
Langue = "En"
Rempli_Feuil_Feuil1
End Sub

Sub Rempli_Feuil_Feuil1()
Select Case Langue
    Case "Fr"
        Range("D9") = "(LE COMMERCANT)"
        Range("A10") = "NOM:"
        Range("C10") = "PRÉNOM:"
        Range("A11") = "NOM:"
        Range("C11") = "PRÉNOM:"
        Range("A12") = "ADRESSE:"
        Range("A13") = "VILLE:"


        
    Case "En"
        Range("D9") = "(THE MERCHANT)"
        Range("A10") = "LAST NAME:"
        Range("C10") = "FIRST NAME:"
        Range("A11") = "LAST NAME:"
        Range("C11") = "FIRST NAME:"
        Range("A12") = "ADRESS:"
        Range("A13") = "CITY:"

        
        
        
    Case Else
        Debug.Print "ceci ne devrait pas se produire."
End Select
End Sub

0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
23 janv. 2023 à 15:38

Bonjour,

essaie cela:

Option Explicit
Public Langue As String
Sub btnFrancais_Cliquer()
Langue = "Fr"
Rempli_Feuil_Feuil1
End Sub
Sub btnAnglais_Cliquer()
Langue = "En"
Rempli_Feuil_Feuil1
End Sub
Sub Rempli_Feuil_Feuil1()
Dim i As Integer
For i = 1 To 2
With Worksheets(i)
Select Case Langue
    Case "Fr"
        .Range("D9") = "(LE COMMERCANT)"
        .Range("A10") = "NOM:"
        .Range("C10") = "PRÉNOM:"
        .Range("A11") = "NOM:"
        .Range("C11") = "PRÉNOM:"
        .Range("A12") = "ADRESSE:"
        .Range("A13") = "VILLE:"
    Case "En"
        .Range("D9") = "(THE MERCHANT)"
        .Range("A10") = "LAST NAME:"
        .Range("C10") = "FIRST NAME:"
        .Range("A11") = "LAST NAME:"
        .Range("C11") = "FIRST NAME:"
        .Range("A12") = "ADRESS:"
        .Range("A13") = "CITY:"
    Case Else
        Debug.Print "ceci ne devrait pas se produire."
End Select
End With
Next i
End Sub

0

Merci :)

Ca fonctionne!!

Mon seul problème la la situation, c'est que ma feuille 1 et feuille 2 n'ont pas la même mise en page... il faudrait donc que je puisse spécifier les ''range'' pour chacune des feuilles.

Mon autre option pourrait aussi de revoir la mise en page des 2 feuilles pour qu'elles coïncident mais certain champs qui sont présent dans la première feuille ne doivent pas l'être dans la 2e.

Je continue d'explorer mes possibilités, mais merci pour le code que je conserverai précieusement!!

0
yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
23 janv. 2023 à 18:28

bonjour,

tu peux aussi faire ainsi:

Sheets("Contrat").Range("D9") = "(LE COMMERCANT)"
Sheets("Offre d'achat").Range("X123") = "(LE COMMERCANT)"
0
Magen_879 > yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024
25 janv. 2023 à 18:49

Oh c'est exactement cette info qui me manquais :)

merci merci!!

0