Fonction choix onglet excel en VBA

[Résolu]
Signaler
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
-
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
-
Re-bonjour à tous,

Dans mon projet, je dois copier des données d'un des onglet dans un autre onglet nommé TEMPS SUPP.

Pour cela, j'ai un UserForm avec 4  combobox dont le premier consiste à choisir les données de un onglet en particulier soit 501 ou 1991.

Le problème est que dans mon code, si je dit: Sheets (501) .Select, ça fonctione pour cette onglet.

J'ai des données dans l'onglet 501 et 1991. Donc avec mon combobox, je veux avoir le choix de l'onglet à copier - collé dans l'onglet TEMPS SUPP.

Voici mon code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
    Application.Run "'SEMAINE 49 - 2006.xls'!Unprotect"
    Application.Run "'SEMAINE 49 - 2006.xls'!Générale"
    'Sheets(cboListe4).Select
    Cells.Select
    ActiveWindow.SmallScroll Down: =-111
    Selection.Copy
    Sheets("TEMPS SUPP").Select
    Range("A1").Select
    ActiveSheet.Paste
    Columns("F:L").Select
    Selection.EntireColumn.Hidden = True
    Columns("U:IV").Select
    Selection.EntireColumn.Hidden = True
    Columns("T:T").Select
    Selection.ClearContents
    Range("Q7").Select
    Columns("T:T").ColumnWidth = 1.57
    Columns("D:D").ColumnWidth = 7
   
            'Ajouter la date du jour
    Range("M1").Select
    ActiveCell.FormulaR1C1 = "=TODAY()"
    Range("M1:Q1").Select
    With Selection
        .HorizontalAlignment = xlCenterAcrossSelection
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.NumberFormat = "[$-C0C]d mmm yyyy;@"
    With Selection.Font
        .Name = "Comic Sans MS"
        .Size = 20
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = 3
    End With
   
                 'INSERTION TEMPS SUPPLÉMENTAIRE EN HAUT DE PAGE
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "TEMPS SUPPLÉMENTAIRE"
   
   
               'Zone d'impression
    With ActiveSheet.PageSetup
        .PrintTitleRows = "$1:$4"
        .PrintTitleColumns = ""
    End With
    ActiveSheet.PageSetup.PrintArea = ""
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.196850393700787)
        .RightMargin = Application.InchesToPoints(0.196850393700787)
        .TopMargin = Application.InchesToPoints(0.196850393700787)
        .BottomMargin = Application.InchesToPoints(0.984251968503937)
        .HeaderMargin = Application.InchesToPoints(0.511811023622047)
        .FooterMargin = Application.InchesToPoints(0.511811023622047)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 1200
        .CenterHorizontally = True
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = 120
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 75
        .PrintErrors = xlPrintErrorsDisplayed
    End With
   
   
   
   
   
                 'FILTRE POUR L'IMPRESSION
 
  Rows("4:316").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=4, Criteria1:=(cboListe)
    Selection.AutoFilter Field:=5, Criteria1:=(cboListe2), Operator:=xlOr, _
        Criteria2:=(cboListe3)
    Range("A4").Select
    ActiveWindow.SmallScroll Down:=-57
    UserForm1.Hide
    ActiveWindow.SelectedSheets.PrintPreview
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Selection.AutoFilter
    ActiveWindow.SmallScroll Down:=-15
    UserForm1.Show
    cboListe = (" ")
    cboListe2 = (" ")
    cboListe3 = (" ")
    cboListe4 = (" ")
   
    Sheets("Menu").Select
    Application.ScreenUpdating = True
   
 End Sub

Comment puis-je me servire de mon comboBox pour le choix des onglet?

Merci encore!!!!!!!!!!!!!  

4 réponses

Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
Merci, ça fonctionne très bien.

J'avais oublier un code pour le combobox.

Tu as bien raison.

J'ai corrigé aussi : Me.cboListe4.RowSource = "Menu!I15:I16"<strike> & DerLi

</strike>Tous est super.
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

Voici un petit exemple :

Private Sub ComboBox1_Change()
    Sheets(ComboBox1.Text).Select
    ' si je choisi Feuil2, bah Feuil2 se sélectionne
End Sub

Private Sub UserForm_Initialize()
    Dim sSheet As Sheets
    ' pour être sûr des noms des feuilles
    
For Each sSheets In Application.Sheets
    ComboBox1.AddItem sSheets.Name
Next sSheets

End Sub


~ <small>[code.aspx?ID=39466 Mortalino]</small>
~

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
J'ai essayé avec:<sup>

</sup><hr size= "2" width="100%" />Private Sub UserForm_Activate()
Dim DerLi As Integer
       
    Sheets("TEMPS SUPP").Select
    DerLi = PLVide(1) - 1
    Me.cboListe.RowSource = "Menu!G14:G" & DerLi
    Me.cboListe2.RowSource = "Menu!H14:H" & DerLi
    Me.cboListe3.RowSource = "Menu!H14:H" & DerLi
    Me.cboListe4.RowSource = "Menu!I15:I16" & DerLi
    Sheets("TEMPS SUPP").Select
   
   
         Dim sSheet As Sheets
    ' pour être sûr des noms des feuilles
   
For Each sSheets In Application.Sheets
    cboListe4.AddItem sSheets.Name
Next sSheets
End Sub
<hr size="2" width="100%" />Et :
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
    Application.Run "'SEMAINE 49 - 2006.xls'!Unprotect"
    Application.Run "'SEMAINE 49 - 2006.xls'!Générale"
    Sheets(cboListe4).Select
    Cells.Select
    ActiveWindow.SmallScroll Down:=-111
    Selection.Copy
    Sheets("TEMPS SUPP").Select
    Range("A1").Select
    ActiveSheet.Paste
    Columns("F:L").Select
    Selection.EntireColumn.Hidden = True
    Columns("U:IV").Select
    Selection.EntireColumn.Hidden = True
    Columns("T:T").Select
    Selection.ClearContents
    Range("Q7").Select
    Columns("T:T").ColumnWidth = 1.57
    Columns("D:D").ColumnWidth = 7

<hr size="2" width="100%" />Ça me donne une erreur à :
Private Sub UserForm_Activate()
Dim DerLi As Integer
       
    Sheets("TEMPS SUPP").Select
    DerLi = PLVide(1) - 1
    Me.cboListe.RowSource = "Menu!G14:G" & DerLi
    Me.cboListe2.RowSource = "Menu!H14:H" & DerLi
    Me.cboListe3.RowSource = "Menu!H14:H" & DerLi
    Me.cboListe4.RowSource = "Menu!I15:I16" & DerLi
    Sheets("TEMPS SUPP").Select
   
   
         Dim sSheet As Sheets
    ' pour être sûr des noms des feuilles
   
For Each sSheets In Application.Sheets
    cboListe4.AddItem sSheets.Name
Next sSheets
End Sub

<hr size ="2" width="100%" />
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
C-est pas normal, moi ça fonctionne nickel.
Bon, de toute façon, je vois qu-avant tu fais un RowSource donc ça devrait être bon..

Reprends ton code initial et au lieu de faire Sheets(cboListe4).Select, fait Sheets(cboListe4.Text).Select

(pis au cas où, vérifie que les cellules I15 & I16 de la feuille Menu, elles doivent contenir les noms de tes feuilles, vérifie absolument l-orthographe, une lettre en trop (ou en moins) et ça plante. Vérifie également qu-il n-y ait pas d-espaces avant et après.

Pour conclure,
Me.cboListe4.RowSource = "Menu!I15:I16" & DerLi   -->  Faux !

C'est soit :
Me.cboListe4.RowSource = "Menu!I15:I16"<strike> & DerLi</strike>

soit :
Me.cboListe4.RowSource = "Menu!I15:I<strike>16</strike>" & DerLi

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--