refaire une feuille

aperobass

XLDnaute Junior
bonsoir,je suis entrain de faire un classeur avec un modèle, mais je n'arrive pas refaire la feuille "menu" le bouttonmacro pour lancer userform c'est bon mais pour le menu déroulant problème .Quelqu'un pourrait m'expliquer?
JE début en vba
 

Pièces jointes

  • modele serial.zip
    41.5 KB · Affichages: 31

job75

XLDnaute Barbatruc
Re : refaire une feuille

Bonsoir aperobass,

Vous recherchez les difficultés ;)

Elles viennent de la liste des mois dans la feuille Listes : à cause des accents, il y a des feuilles qui ne peuvent pas être trouvées simplement et il a fallu écrire un code laborieux.

Revoyez donc cette liste pour qu'elle corresponde aux noms exacts des feuilles. Pas de problème pour un espace devant le mois.

La macro est alors très simple :

Code:
Private Sub ComboBox1_Change()
On Error Resume Next
Sheets(Trim(ComboBox1)).Activate
If Err Then MsgBox "La feuille " & Trim(ComboBox1) & " n'existe pas...", 48
End Sub

EDITION : il faut aussi rendre la liste des mois dynamique.

1) Définissez (menu Insertion-Nom) le nom ListeMois par la formule :

=DECALER(Listes!$A$5;;;NBVAL(Listes!$A:$A)-2)

[Si vous effacez Listes!A3 (qui ne sert à rien), mettez -1 au lieu de -2]

2) En Mode Création, en face de la propriété ListFillRange de la ComboBox, écrivez : ListeMois

A+
 
Dernière édition:

aperobass

XLDnaute Junior
Re : refaire une feuille

salut, merci job75 de m'expliquer . Mais je suis perdu, j'ai définie (menu Insertion-Nom) le nom ListeMois et aprés je ramme...Si tu peux m'aider je te mes ce que j'ai fais.
a+
 

Pièces jointes

  • modele sérial.zip
    38 KB · Affichages: 15

job75

XLDnaute Barbatruc
Re : refaire une feuille

Bonjour aperobass, le forum,

Bon pour que la liste des mois soit toujours à jour, j'ai complété ComboBox1_Change :

Code:
Private Sub ComboBox1_Change()

On Error Resume Next
Sheets(Trim(ComboBox1)).Activate
If Err Then MsgBox "La feuille " & Trim(ComboBox1) & " n'existe pas...", 48

[COLOR="Red"]If Range(ComboBox1.ListFillRange).Count = Sheets.Count - 2 Then Exit Sub 'mettre en commentaire pour la 1ère fois[/COLOR]
Dim i As Integer
For i = 2 To Sheets.Count - 1
Sheets("Listes").Range("A3").Offset(i) = " " & Sheets(i).Name
Next

End Sub

La 1ère fois, pour refaire la liste sans se fatiguer, mettre la ligne en rouge en commentaire.

Fichier joint.

A+
 

Pièces jointes

  • modele serial(1).zip
    43.6 KB · Affichages: 26
  • modele serial(1).zip
    43.6 KB · Affichages: 28
  • modele serial(1).zip
    43.6 KB · Affichages: 26

job75

XLDnaute Barbatruc
Re : refaire une feuille

Re,

Autant pour moi, il faut corriger la macro dans le fichier (1) :

Code:
Private Sub ComboBox1_Change()

On Error Resume Next
Sheets(Trim(ComboBox1)).Activate
If Err Then MsgBox "La feuille " & Trim(ComboBox1) & " n'existe pas...", 48

If [COLOR="Red"][ListeMois][/COLOR].Count = Sheets.Count - 2 Then Exit Sub 'mettre en commentaire pour la 1ère fois
Dim i As Integer
For i = 2 To Sheets.Count - 1
Sheets("Listes").Range("A3").Offset(i) = " " & Sheets(i).Name
Next

End Sub

Mais il vaut mieux je pense mettre la mise à jour de la liste dans ThisWorkbook, cela se fera immédiatement quand on créera une nouvelle feuille.

La macro dans le fichier (2) :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If [ListeMois].Count = Sheets.Count - 2 Then Exit Sub 'mettre en commentaire pour la 1ère fois
Dim i As Integer
For i = 2 To Sheets.Count - 1
Sheets("Listes").Range("A3").Offset(i) = " " & Sheets(i).Name
Next
End Sub

A+
 

Pièces jointes

  • modele serial(1).zip
    43.6 KB · Affichages: 25
  • modele serial(1).zip
    43.6 KB · Affichages: 26
  • modele serial(1).zip
    43.6 KB · Affichages: 22
  • modele serial(2).zip
    44.3 KB · Affichages: 20

aperobass

XLDnaute Junior
Re : refaire une feuille

oh la ,petit problème dans les fichiers ça plante excel.regard je t'es mis mon mouveaux fichier avec les mouveaux codes.
a+
 

Pièces jointes

  • new.zip
    37.8 KB · Affichages: 24
  • new.zip
    37.8 KB · Affichages: 29
  • new.zip
    37.8 KB · Affichages: 21

job75

XLDnaute Barbatruc
Re : refaire une feuille

Re,

Beaucoup de choses à adapter avec ce nouveau fichier.

1) La ComboBox1 n'etant plus dans une feuille mais dans l'UserForm Sérial, mettre dans le code de cet UserForm :

Code:
Private Sub ComboBox1_Change()
On Error Resume Next
Application.EnableEvents = False
Sheets(Trim(ComboBox1)).Activate
Application.EnableEvents = True
If Err Then MsgBox "La feuille " & Trim(ComboBox1) & " n'existe pas...", 48
End Sub

2) C'est la propriété RowSource de cette ComboBox1 qui doit maintenant être égale à listeréférence.

3) Le nom listeréférence était mal défini, ce doit être :

=DECALER(Listes!$A$5;;;NBVAL(Listes!$A:$A)-1)

4) Enfin j'ai finalement supprimé le test If... dans la macro SheetActivate de ThisWorkbook :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim i As Integer
Sheets("Listes").Range("A5:A65536").ClearContents
For i = 2 To Sheets.Count - 1
Sheets("Listes").Range("A3").Offset(i) = " " & Sheets(i).Name
Next
End Sub

A+
 

Pièces jointes

  • new(1).zip
    39 KB · Affichages: 24

aperobass

XLDnaute Junior
Re : refaire une feuille

bonjour job75, j'ai modifier mon classeur dans le vba et j'ai un soucis avec la mise en place des données dans les cellules.Quand j'enregistre mes donnés sur ma feuille de calcul ça marche avec les onglets que j'ai déjà mais quand j'en insère ou que je l'es renomme ça marche plus "erreur".:mad:
Peut tu m'aider a résoudre ce problème?
A+:D
 

Pièces jointes

  • sérial new(1).zip
    39.3 KB · Affichages: 17

job75

XLDnaute Barbatruc
Re : refaire une feuille

Bonjour aperobass,

Je ne comprends pas, je ne vois pas d'erreur.

Quand on ajoute ou renomme une feuille, elle apparaît dans la liste bien sûr, et la ComboBox la sélectionne.

Que voulez-vous de plus ??

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : refaire une feuille

Re,

Bon j'ai regardé la macro du bouton "Enregistrer", j'ai compris, c'est très simple.

Lors de la création de la liste dans ThisWorkbook, on met un espace devant les noms des feuilles (comme c'était au tout début), ça peut servir pour la présentation de la liste.

Donc soit vous enlevez l'espace dans ThisWorkbook, soit dans le code du bouton vous remplacez :

nomClasseur = Me.ComboBox1 par

nomClasseur = Trim(ComboBox1) [NB : les Me. ne servent à rien]

A+
 

Discussions similaires

Réponses
5
Affichages
347

Membres actuellement en ligne

Statistiques des forums

Discussions
312 379
Messages
2 087 765
Membres
103 662
dernier inscrit
rterterert