XL 2013 VB Macro

enzo_s

XLDnaute Junior
Bonjour Forum,

J'ai une petite question sur une macro, qui est ci-dessous.

J'essaye d'exporter dans un seul fichier les feuilles qui sont sélectionnées dans le case check ci-dessous.

Comment je pourrais dire de voir ce qui est coché et d'exporter plutôt que tout prendre.

Merci d'avance de l'aide :)


1034033


VB:
Sub ExportBlock3()
Dim prefixName As String
Dim fichier As Variant, F As Worksheet, tablo, i&, txt$
prefixName = Range("C3").Value
If [C5] = "Select" Then MsgBox "Please add your WLC Name"
ChDir ThisWorkbook.Path & "\" 'dossier affiché
fichier = "Configuration deployment " & prefixName & Format(Date, "yyyy-mm-dd")
fichier = Application.GetSaveAsFilename(fichier, "Text Files (*.txt), *.txt")
If fichier = False Then Exit Sub
'ActiveSheet.Unprotect "**"
For Each F In Sheets(Array("Backup-GC", "Interfaces Creation", "Global Configuration", "RF-Profiles", "Flexconnect-Grps", "Final-Backup"))
    tablo = F.UsedRange.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
    For i = 1 To UBound(tablo)
        If Not IsError(tablo(i, 1)) Then If tablo(i, 1) <> "!" Then txt = txt & vbCrLf & tablo(i, 1)
Next i, F
Open fichier For Output As #1
Print #1, Mid(txt, 2)
'ActiveSheet.Protect "**"
Close #1
End Sub
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Dans l'évènement click du bouton:
VB:
 Dim F As Worksheet
    Dim res() As String
    Dim ctl As Control
    Dim i As Integer
    For Each ctl In Me.Controls
        If TypeOf ctl Is Msforms.CheckBox Then
            i = i + 1
            ReDim Preserve res(1 To i)
            res(i) = ctl.Caption
        End If
    Next ctl
    If i > 0 Then ExportBlock3 (res)

et la macro d'export:

Code:
Sub ExportBlock3(Feuilles As Variant)
    '...... Début de la macro'

    For Each F In Sheets(Feuilles)
        tablo = F.UsedRange.Resize(, 2)    'matrice, plus rapide, au moins 2 éléments
        For i = 1 To UBound(tablo)
            If Not IsError(tablo(i, 1)) Then If tablo(i, 1) <> "!" Then txt = txt & vbCrLf & tablo(i, 1)
        Next i, F
        Open fichier For Output As #1
        Print #1, Mid(txt, 2)
        'ActiveSheet.Protect "**"
        Close #1
    End Sub

Bon appétit
 

enzo_s

XLDnaute Junior
J'ai updaté mon post avec le bon fichier

Merci Roblonchon de ta réponse mais je trouve pas ou tu dois mettre "Dans l'évènement click du bouton: " le code

Encore merci de ton aide
 

Pièces jointes

  • TestMacro_v5.0.3.xlsm
    206.9 KB · Affichages: 3
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

La prochaine fois, mettez votre classeur exemple dès le premier post, ce qui nous évitera de travailler pour rien!!!!!


bon journée
 

Pièces jointes

  • Enzo_S_v5.0.3.xlsm
    208.5 KB · Affichages: 6

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Oui j'ai testé. J'ai même du créer les feuilles pour pouvoir le faire puisque votre fichier exemple est quasi vide.
Alors, alors:

Lancez la procédure, lorsqu'elle s'arrête sur la ligne et que vous choisissez débogage. Faite Affichage/Fenêtre variables locales.
Dans la fenêtre qui s'ouvre repérez la variable feuilles. En face vous devriez avoir: Variant/String (1 to 3) Où 3 est le nombre de feuilles sélectionnées.
Si vous cliquez sur le + à gauche de 'feuilles' vous devriez voir se développez un arbre avec:
feuille(1)
feuille(2)
etc...
Avec en face de chaque item, sa valeur.

Dites-moi

Bon après-midi au frais
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Re,
le problème était le nom que j'avais mis dans les cases.
...arf :)
Content que vous l'ayez trouvé tout seul. Je pensais bien qu'il s'agissait de quelque chose comme cela.
Si votre classeur doit être utilisé par d'autres et que les feuilles ne sont pas protégées, il serait bien de prévoir une gestion d'erreur au cas où l'utilisateur aurait changé ne serait-ce que d'un caractère le nom d'une feuille.

A bientôt
 

enzo_s

XLDnaute Junior
Re,

...arf :)
Content que vous l'ayez trouvé tout seul. Je pensais bien qu'il s'agissait de quelque chose comme cela.
Si votre classeur doit être utilisé par d'autres et que les feuilles ne sont pas protégées, il serait bien de prévoir une gestion d'erreur au cas où l'utilisateur aurait changé ne serait-ce que d'un caractère le nom d'une feuille.

A bientôt
Re,

...arf :)
Content que vous l'ayez trouvé tout seul. Je pensais bien qu'il s'agissait de quelque chose comme cela.
Si votre classeur doit être utilisé par d'autres et que les feuilles ne sont pas protégées, il serait bien de prévoir une gestion d'erreur au cas où l'utilisateur aurait changé ne serait-ce que d'un caractère le nom d'une feuille.

A bientôt

En tout cas mille Merci pour votre patience :)
 

Statistiques des forums

Discussions
312 345
Messages
2 087 453
Membres
103 546
dernier inscrit
mohamed tano