Appel d'une procédure dans un Userform

Tu peux peut-être essayer de l'enregistrer en mode Binary (xlsb)

A+

Ça marche, je vais voir ça merci !

Salut,

Je me permets de ré-up le sujet ; je te cache pas que je n'ai pas réussi à obtenir le résultat que je souhaitais. Du coup, je suis parti sur un enregistrement ".xls". Du coup je voudrais qu'une fois que ma base de donnée soit filtrée, je copie les données filtrées sur un nouveau classeur et je l'enregistre sous ce format.

Je me suis inspiré d'un code d'un membre qui m'avait fait à peu près la même chose mais sous forme de nouvelles feuilles mais, en l'adaptant, ça me dis que que la procédure ou la fonction n'a pas été définie.

Private Sub ExportXls()
    Dim ClasseurSource As Workbook
    Dim Ws As Worksheet
    Dim Criteres As Range
    Dim FName$, Fchemin$, Fxls$

    FName = "Ventilation de la société " & Dest
    Fchemin = ThisWorkbook.Path 
    Fxls = Fchemin & FName & ".xls" 'cette variable a pour finalité de se placer au Attachments.Add

    Set ClasseurSource = ThisWorkbook
    FeuilleSource = [TBD].Parent.Name
    Set Criteres = ClasseurSource.Sheets("Prm").Range("G1:G2")

    For Each Nom In [TFlop].ListObject.DataBodyRange.Cells 'représente la plage de valeurs sans l'entête 
        Criteres.Cells(2, 1) = Nom

        Workbooks.Add
        Set Ws = ActiveSheet
        Ws.Name = Nom

        ClasseurSource.Sheets(FeuilleSource).Range("TBD[#All]").AdvancedFilter _
        Action:=xlFilterCopy, CriteriaRange:=Criteres, _
        CopyToRange:=ActiveWorkbook.Sheets(1).Range("A1"), Unique:=True

        SaveAs Fxls
    Next Nom
End Sub

Pourrais-tu m'éclaircir ?

Réup please.

Finalement je suis sur une piste, je pense avoir trouvé la solution.

J'aimerais savoir tant qu'à faire, dans la partie Visual Basic, j'ai vu que tu avais renommé les Sheets (WsBD & WsP) ; du coup pour utiliser l'instruction Sheets(1) par exemple, je dois remplacer par WsBD(1) ?

Bonjour,

C'est le cas normalement : soit WsBD soit Worksheets("le nom de la feuille") soit Worksheets(1) si c'est la première feuille de ton classeur.

Bonne journée.

Bonjour,

Merci à toi.

Et une dernière question, sur le programme que galopin01 m'a fait, il a déclaré deux variables de manières global afin de ne pas les déclarer à chaque procédure ; on ne peut que déclarer des variables en global ? Si on affecte une valeur à cette variable en la déclarant de manière globale c'est normal que ça ne fonctionne pas ?

Bonjour,

Je ne pourrais parler pour lui car il a un bien meilleur niveau que moi (par exemple, très mauvaise habitude de ma part, je ne déclare jamais mes types de variables ...). Par contre ce que je peux te dire c'est qu'il déclare les types de variables en global, la variable, elle, n'est affectée qu'à partir de ligne comme ça :

Dest = o.Value

Bonne soirée.

Rechercher des sujets similaires à "appel procedure userform"