Copie/suppression de feuilles avec bouton

Kalbo

XLDnaute Nouveau
Bonjour,

Je développe un classeur sous Excel 2007/
Dans ce classeur j'ai 3 feuilles :
- La première me permet de lancer des actions suite à l'appuie sur des boutons (calculer et RAZ).
- La deuxième m'affiche les résultats quand j'appuie sur le bouton calculer de ma première feuille
- La troisième est un modèle de la deuxième feuille cela me permet lorsque j'appuie sur le bouton RAZ de la première feuille je supprime la deuxième feuille et je copie la troisième à la place.

Tout ce process fonctionnait très bien jusqu'au jour où on m'a demandé d'ajouter un bouton légende (affiche une IHM contenant la légende) sur la deuxième et troisième feuille.

Maintenant j'ai un problème quand je clique sur le bouton calculer (après avoir fait un calculer puis un RAZ). Il trouve plus mes feuilles car toutes mes variables globales sont vide ce qui fait que Worksheets(NOM_FEUILLE) n'est pas trouvé car NOM_FEUILLE est vide.

Je comprends pas du tout cette erreur car sans les boutons que j'ai rajouté cela fonctionnait très bien.:confused:

Donc je ne sais pas si mon erreur vient de la suppression ou de la copie de la feuille.:confused:

Pouvez-vous m'aider?

Merci d'avance,
Kalbo
 

skoobi

XLDnaute Barbatruc
Re : Copie/suppression de feuilles avec bouton

Bonjour Kalbo, bienvenue sur XLD,

Est-ce que les codes des boutons (si ce sont des boutons type formulaire) sont toutes dans un seul module avec les variables déclarées au niveau module?
 

Kalbo

XLDnaute Nouveau
Re : Copie/suppression de feuilles avec bouton

Ce sont des boutons type formulaire et le code lier a ces boutons n'est pas dans des modules mais il est dans chaque feuille. Ce qui veut dire que le code de ce bouton est dupliqué dans la feuille 2 et 3.

Par contre les variables globales comme NOM_FEUILLE sont déclarés dans un module.

Merci pour ton aide,
Kalbo
 

Kalbo

XLDnaute Nouveau
Re : Copie/suppression de feuilles avec bouton

Oui mes variables globales sont en public.

Par contre je me demande si ce n'est pas un pb lors de la copie car j'ai vu sur des forums qu'il fallait codé la copie des boutons comme par exemple :

Copier une feuille et ses boutons
Code:
        Sub SheetCopy(Source As Worksheet, Before As Worksheet)
        Dim CmdB1 As CommandButton, CmdB2 As CommandButton
        Dim Dest As Worksheet, I As Integer
        Source.Copy Before
        Set Dest = Before.Previous
        For I = 1 To Source.OLEObjects.Count
            With Source.OLEObjects(I)
                If TypeOf .Object Is CommandButton Then
                    Set CmdB1 = .Object
                    Set CmdB2 = Dest.OLEObjects(I).Object
                    CmdB2.Name = CmdB1.Name
                End If
            End With
        Next I
        End Sub

        Sub Test()
        SheetCopy Sheets(1), Before:=Sheets(2)
        End Sub
Moi je ne fais pas du tout ca car mon bouton est copié.
Dans mon code je fais juste ça :
Code:
' Copie à partir de la feuille modèle et renommage de la feuille
Worksheets(nomFeuilleModele).Copy After:=Worksheets(posFeuilleDansClasseur - 1)

Je sais pas si je suis sur la bonne piste mais je vais essayer.

Merci pour ton aide,
Kalbo
 

skoobi

XLDnaute Barbatruc
Re : Copie/suppression de feuilles avec bouton

Bonjour,

Ce sont des boutons type formulaire et le code lier a ces boutons n'est pas dans des modules mais il est dans chaque feuille. Ce qui veut dire que le code de ce bouton est dupliqué dans la feuille 2 et 3.
A mon avis le soucis vient du fait que le code est dans les feuilles et non dans un module.
Déplace le code dans un module. Il faudra penser à "gérer" les feuilles dans ce nouveau code.
 

Kalbo

XLDnaute Nouveau
Re : Copie/suppression de feuilles avec bouton

Bonjour,

Avec un contrôle activeX tu es obligé de passé par les feuilles non?

Le code de mes boutons sont dans chaque feuille mais pour le boutaon RAZ j'appelle une méthode qui est dans un module. Mais je passe d'abord par ma feuille :
Code:
Private Sub BtnRAZ_Click()
RAZ
End sub

Pour les boutons légendes je fais juste apparaître une IHM avec la méthode show et je change le titre de la fenêtre. Donc je n'ai pas necessité le besoin de passer par un module.
Code:
Private Sub BtnLegende_Click()
    fenetreLegende.Caption = CH_LEGENDE
    fenetreLegende.Show vbModal
End Sub

Dois je passer par les anciens boutons qui eux crée directement des fonctions dans les modules?

Merci pour ton aide,
Kalbo
 

skoobi

XLDnaute Barbatruc
Re : Copie/suppression de feuilles avec bouton

re,

Avec un contrôle activeX tu es obligé de passé par les feuilles non?

Oui tout à fait, mais tu as bien dis qu'il s'agissait de bouton formulaire et non activeX (ou controle).
Enfin peu importe.
Pour une question de facilité (et pour contourner le problème) je te conseille de remplacer les boutons de controle par des boutons formulaire pour faire ce que je t'ai dis auparavant sauf si tu tiens absolument à garder ces boutons activeX.
 

Kalbo

XLDnaute Nouveau
Re : Copie/suppression de feuilles avec bouton

C'est bon ça marche merci beaucoup de ton aide.

Je comprends pas pourquoi (en sommes le fonctionnement est le même) mais cela marche.
Espérons que je puisse ajouter mon multilangue aussi facilement qu'avec le bouton activeX.

Kalbo.
 

Kalbo

XLDnaute Nouveau
Re : Copie/suppression de feuilles avec bouton

Bonjour,

Suite à l'ajout de ces nouveaux boutons, je ne trouve pas comment on fait pour les renommer.

Avant je faisais :
Code:
Worksheets(NOM_FEUILLE).BtnLegende.Caption = xxx

Mais maintenant je ne vois pas comment je dois m'y prendre.

Merci d'avance,
Kalbo.
 

skoobi

XLDnaute Barbatruc
Re : Copie/suppression de feuilles avec bouton

Bonjour,

Pour toutes les formes issue de la la barre d'outil formulaire, Il faut utiliser l'objet Shape comme ceci:
Code:
activesheet.shapes("Bouton 1").TextFrame.Characters.Text[FONT=Arial]
[/FONT]

Bonne journée.
 

Kalbo

XLDnaute Nouveau
Re : Copie/suppression de feuilles avec bouton

Ca marche merci beaucoup.

Par contre je comprends la propriété name de mon bouton sera toujours bouton 1?

On ne peut pas changer la propriété Name de ce type de bouton graphiquement comme pour l'autre avec la fenêtre des propriétés?

J'ai eu du mal à trouver mon bouton car je l'avais appelé Caption hors son names est bouton 9.

Kalbo.
 

skoobi

XLDnaute Barbatruc
Re : Copie/suppression de feuilles avec bouton

Re,
Par contre je comprends la propriété name de mon bouton sera toujours bouton 1?
Normalement il aura le même identifiant Name que le bouton copié de la feuille d'origine.
Ce qui figure dans la "zone nom" sur la feuille correspond à Name (qui peut être modifié).:
Code:
activesheet.shapes("Bouton 1").Name = "toto"
par exemple.
Si tu rappel ce bouton plus loin dans le code, cela devient:
Code:
activesheet.shapes("toto").Name
Ce qui est écrit sur le bouton correspond au code que j'ai donné plus haut.

Voili voilou :)
 
Dernière édition:

Kalbo

XLDnaute Nouveau
Re : Copie/suppression de feuilles avec bouton

Donc tu es obligé de le modifié dans le code ce que je voulais éviter.
Je trouve que c'est pas très souple comparé à l'autre bouton?

En tout cas merci pour les infos ça m'a bien aidé.

Kalbo.
 

Discussions similaires

Réponses
4
Affichages
228

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22