IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

comprendre code vba


Sujet :

VB.NET

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    second de cuisine
    Inscrit en
    Mars 2025
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : second de cuisine

    Informations forums :
    Inscription : Mars 2025
    Messages : 1
    Par défaut comprendre code vba
    bonjour je voudrais comprendre le code vba suivant:
    Function PrintSelectedSheets()

    Dim I As Long
    Dim TopPos As Long
    Dim SheetCount As Long
    Dim PrintDlg As DialogSheet
    Dim CurrentSheet As Worksheet
    Dim CB As CheckBox
    Dim Numcop As Long
    Dim X


    Application.Dialogs(xlDialogPrinterSetup).Show

    Application.ScreenUpdating = False

    If ActiveWorkbook.ProtectStructure Then
    MsgBox "Workbook is protected.", vbCritical
    Exit Function
    End If

    Set CurrentSheet = ActiveSheet
    X = CurrentSheet.Name
    Set PrintDlg = ActiveWorkbook.DialogSheets.Add
    SheetCount = 0

    TopPos = 40
    For I = 1 To ActiveWorkbook.Worksheets.Count
    Set CurrentSheet = ActiveWorkbook.Worksheets(I)

    If Application.CountA(CurrentSheet.Cells) <> 0 And CurrentSheet.Visible Then
    SheetCount = SheetCount + 1
    PrintDlg.CheckBoxes.Add 78, TopPos, 150, 16.5
    PrintDlg.CheckBoxes(SheetCount).Text = CurrentSheet.Name
    TopPos = TopPos + 13
    End If
    Next I

    PrintDlg.Buttons.Left = 240

    With PrintDlg.DialogFrame
    .Height = Application.Max(68, PrintDlg.DialogFrame.Top + TopPos - 34)
    .Width = 230
    .Caption = "Sélectez les Fuielles de calcul à imprimer"
    End With

    PrintDlg.Buttons("Button 2").BringToFront
    PrintDlg.Buttons("Button 3").BringToFront

    Numcop = Application.InputBox("Entrez le nombre de copies à imprimer:", "Combien de copies?", 1, Type:=1)
    If Numcop = 0 Then
    ElseIf Len(Numcop) > 0 Then
    End If

    CurrentSheet.Activate
    Dim cnt As Integer
    Application.ScreenUpdating = True
    If SheetCount <> 0 Then
    If PrintDlg.Show Then
    For Each CB In PrintDlg.CheckBoxes
    If CB.Value = xlOn Then
    If cnt = 0 Then
    Worksheets(CB.Caption).Select
    Else
    Worksheets(CB.Caption).Select Replace:=False
    End If
    cnt = cnt + 1
    End If
    Next CB
    ActiveWindow.SelectedSheets.PrintOut copies:=Numcop

    End If
    Else
    MsgBox "Toutes les feuilles de calcul sont vides."
    End If

    Application.DisplayAlerts = False

    PrintDlg.Delete

    Sheets(X).Select
    Application.DisplayAlerts = True




    End Function

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 561
    Par défaut
    Bonjour,
    Pour information tu es dans le forum VB.net et pas dans le forum VBA.

    https://chatgpt.com/share/67c41a56-7...5-9f9762a6987f

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 511
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 511
    Par défaut
    le lien est mort

    Tu peux lancer la fonction en pas à pas si besoin aussi, et regarder les valeurs des variables.

    Ce que ça fait:
    - ouverture de la boite de dialogue d'impression
    - si la structure du classeur est protégé, on ne fait rien
    - on ajoute une feuille de type dialogue
    - on compte les feuilles visibles qui contiennent des données et ajoute autant de checkbox (cases à cocher) sur la boite de dialogue
    - ça ajoute sur cette feuille une frame (un cadre) "selectez les fuielles de calcul à imprimer" (aie ça pique les yeux cet orthographe), 2 boutons, une zone de saisie pour le nombre de copies
    - on sélectionne ensuite les feuilles sélectionnées (sélection multiple) et ça lance l'impression du nombre de copies de copies saisi de ces feuilles
    - supprime la feuille de dialogue
    - redonne le focus à la feuille initiale

Discussions similaires

  1. Comprendre un code VBA.
    Par neofoxy dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/10/2008, 10h49
  2. Réponses: 2
    Dernier message: 27/10/2005, 15h51
  3. Réponses: 4
    Dernier message: 13/10/2005, 14h44
  4. Réponses: 3
    Dernier message: 06/09/2005, 10h27
  5. Comment creer une procédure stockée à partir d'un code VBA?
    Par Alcor020980 dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 24/05/2005, 19h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo