Masquer onglet en fonction de la langue choisie

YANOU

XLDnaute Junior
Bonjour à tous et meilleurs vœux pour la nouvelle année.

Je voudrai un classeur avec un onglet "Questionnaire" avec, dans la cellule "C3", soit un drapeau Français, soit un drapeau Anglais et que se drapeau change (de l'un à l'autre indéfiniment) en double-cliquant dessus et que cela me masque les onglets "Français" ou ""Anglais" en fonction.

Pour l'instant (fichier joint), j'ai essayé de faire ceci par étape :
- J'ai positionné mes photos (1 = Drapeau Français ; 2 = Drapeau Anglais)
- Par double-clic sur la cellule B2, celle-ci s'incrémente
- La cellule C2=1 si PAIR ; C2=2 si IMPAIR
mais après, pour lier mes Drapeaux avec la valeur de la cellule C2...
J'ai tenté de nommer mes photos (Formules - Gestionnaires des noms - Fait référence à...), mais je patauge complet et je ne parle pas du masquage des onglets en fonction du choix...!!
N'ayant que très peu de connaissance en MACRO, la remise à plat de ce que j'ai fait me semble indispensable.
Merci pour votre aide.
 

Pièces jointes

  • Test.xlsm
    51.6 KB · Affichages: 26

job75

XLDnaute Barbatruc
Bonjour YANOU,

Le plus simple, dans le code de la feuille "Questionnaire" :
Code:
Sub Anglais()
Application.ScreenUpdating = False
DrawingObjects("Anglais").Visible = False
Sheets("Anglais").Visible = xlSheetHidden
DrawingObjects("Français").Visible = True
Sheets("Français").Visible = xlSheetVisible
End Sub

Sub Français()
Application.ScreenUpdating = False
DrawingObjects("Français").Visible = False
Sheets("Français").Visible = xlSheetHidden
DrawingObjects("Anglais").Visible = True
Sheets("Anglais").Visible = xlSheetVisible
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Drapeaux(1).xlsm
    54.4 KB · Affichages: 25

job75

XLDnaute Barbatruc
Re,

Un peu plus difficile à comprendre, avec une seule macro :
Code:
Sub Drapeau()
If IsError(Application.Caller) Then Exit Sub 'sécurité
Dim dm$, da$
dm = IIf(Application.Caller = "Anglais", "Anglais", "Français")
da = IIf(Application.Caller = "Anglais", "Français", "Anglais")
Application.ScreenUpdating = False
DrawingObjects(dm).Visible = False
Sheets(dm).Visible = xlSheetHidden
DrawingObjects(da).Visible = True
Sheets(da).Visible = xlSheetVisible
End Sub
Fichier(2).

A+
 

Pièces jointes

  • Drapeaux(2).xlsm
    51.2 KB · Affichages: 17

job75

XLDnaute Barbatruc
Re,

S'il y a plus de 2 drapeaux on peut organiser une tournante :
Code:
Sub Drapeau()
If IsError(Application.Caller) Then Exit Sub 'sécurité
Dim a, i, j
a = Array("Français", "Anglais", "Canadien", "Brésilien")
Application.ScreenUpdating = False
For i = 0 To UBound(a)
  DrawingObjects(a(i)).Visible = False
  Sheets(a(i)).Visible = xlSheetHidden
  If a(i) = Application.Caller Then j = i
Next
i = IIf(j = UBound(a), 0, j + 1) 'tournante
DrawingObjects(a(i)).Visible = True
Sheets(a(i)).Visible = xlSheetVisible
End Sub
Fichier (3)

A+
 

Pièces jointes

  • Drapeaux(3).xlsm
    57.5 KB · Affichages: 15

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Je voudrai un classeur avec un onglet "Questionnaire" avec, dans la cellule "C3", soit un drapeau Français, soit un drapeau Anglais et que se drapeau change (de l'un à l'autre indéfiniment) en double-cliquant dessus et que cela me masque les onglets "Français" ou ""Anglais" en fonction.
une seule macro :
upload_2017-1-5_13-32-33.png
 

Pièces jointes

  • Test (4).xlsm
    59.3 KB · Affichages: 25

YANOU

XLDnaute Junior
WAHOU MERCI job75 & Modeste Geedee !!
Mes pauvres connaissances en VBA ne me permettront pas de décortiquer de tels codes....
Une question cependant:
Si je veux "Importer" la macro de Geedee (celle qui me semble la plus simple à comprendre avec mes connaissances...) dans d'autres classeurs déjà mis en forme (j'ai tenté vainement, naïvement...copier/coller drapeaux + créer onglets Français/Anglais + code VBA) qu'elle démarche dois-je effectuer ?
Encore MERCI à vous.
 

Discussions similaires

Statistiques des forums

Discussions
312 111
Messages
2 085 391
Membres
102 882
dernier inscrit
Sultan94