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

Macros et VBA Excel Discussion :

Choix des feuilles d'impressions par boite à cocher


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Médecin
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Choix des feuilles d'impressions par boite à cocher
    Bonjour à toutes et tous,

    Je suis nouveau sur ce forum et d'ailleurs, débutant aussi en codage....
    Je galère de puis un moment et j'aurais besoin d'aide si possible!!!
    Je vous explique.
    J'essaie de créer un fichier excel permettant de gérer l'impression de documents de sortie, après consultation.
    J'ai donc créer plusieurs feuilles, correspondant à mes besoins, ainsi qu'un formulaire, permettant la saisie de toutes les données nécessaires.
    Le but étant, en fonction des cases à cocher que j'aurais sélectionné, d'imprimer le ou les documents choisis.
    J'ai réussi tant bien que mal et à force de chercher, la première partie. C'est à dire le remplissage de toutes les infos.
    Mais je plante depuis pas mal de temps sur le codage de l'impression et du choix des checkbox...
    si vous aviez un peu de temps à me consacrer ce serait sympa!!!
    Je joins le fichier pour que ce soit plus clair.
    Merci d'avance
    Docs Sortie.xlsm

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Pour pouvoir imprimer plusieurs feuilles différentes, il te faut les sélectionner. Pour sélectionner ces différentes feuilles en fonction du choix effectué avec des cases à cocher tu peux utiliser un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Private Sub CommandButton1_Click()
     
        Dim Fe As Worksheet
     
        For Each Fe In Worksheets
     
            Select Case Fe.Name
     
                Case "Feuil1": If CheckBox1.Value = True Then Fe.Select False
                Case "Feuil2": If CheckBox2.Value = True Then Fe.Select False
                Case "Feuil3": If CheckBox3.Value = True Then Fe.Select False
     
                'case...
                'Case...
     
            End Select
     
        Next Fe
     
    End Sub

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Je n'ouvre en aucun cas un classeur tiers et n'ai donc pas ouvert celui joint à cette discussion.
    Mon approche serait celle-ci :
    - sur le userform :
    --- toutes les checkboxes concernées au sein d'un Frame ne contenant qu'elles
    --- dans la propriété tag de chacune d'elles : le nom de la feuille correspondante
    --- Et ensuite : une boucle For Each ... Next parcourant ces checkboxes et décider de l'impression de Worksheets(propriété tag) si valeur de la checkboxes = true

    EDIT : ce qui devrait se traduire ainsi (à tester) pour mettre en oeuvre la sélection dont parle Theze
    un frame nommé le_frame ne contenant que ces checkboxes (avec leur propriété tag renseignée comme exposé plus haut)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim toto as boolean
    toto = true
    for each c in le_frame.controls
      if c.value = true then worksheets(c.tag).select toto  ' on supprime la sélection préexistante avec l'argument true de la méthode select
      toto = false ' de sorte à ajouter les autres sélections à la première
    next
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Médecin
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci de l'interêt que vous portez à ma requête.
    J'ai donc mis en place le code de Theze, qui semble fonctionner et profiter aussi sur les conseils de unparia de tagger les propriétés de chaque checkbox par le nom des feuilles correspondantes.
    Une fois que cette boucle For next est faite, les "checkbox" en état "True" sont détectés (si j'ai bien compris!!!).
    Maintenant comment faire le lien pour appeler la boite d'impression de Office afin de choisir l'imprimante et d'imprimer..
    Derniere chose en rapport avec les conseils de unparia. toutes les checkbox sont dans un frame. le bouton 'imprimer' peut il être à l'intérieur du frame ou doit il etre à l'exterieur
    Encore désolé de vous remettre à contribution...je suis vraiment une bille!!

    MERCI BEAUCOUP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Private Sub BoutonImprimer_Click()
    Dim Fe As Worksheet
     
        For Each Fe In Worksheets
             Select Case Fe.Name
                 Case "Ordo": If CheckBox5.Value = True Then Fe.Select False
                Case "IDE": If CheckBox6.Value = True Then Fe.Select False
                Case "Dispense": If CheckBox7.Value = True Then Fe.Select False
                Case "Arret": If CheckBox8.Value = True Then Fe.Select False
                Case "Garde": If CheckBox9.Value = True Then Fe.Select False
                Case "Passage": If CheckBox10.Value = True Then Fe.Select False
                Case "Arret CERFA": If CheckBox11.Value = True Then Fe.Select False
                Case "AT CERFA": If CheckBox12.Value = True Then Fe.Select False
             End Select
         Next Fe
    End Sub
    Nom : Formulaire.JPG
Affichages : 1289
Taille : 128,7 Ko

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Derniere chose en rapport avec les conseils de unparia. toutes les checkbox sont dans un frame. le bouton 'imprimer' peut il être à l'intérieur du frame ou doit il etre à l'exterieur
    En le mettant à l'extérieur, tu allègeras ton code. Si tu le mets à l'intérieur, il te faudra ajouter des lignes de code pour ne considérer que s'il s'agit d'une checkbox
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Médecin
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci unparia, modification du bouton faite.
    Ne reste plus que l'impression

    Nom : Formulaire.JPG
Affichages : 1250
Taille : 137,3 Ko

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    @theze selectionner!!!?????

    avant que le post evolu ne sachant pas si il avait fait sa boite de dialog perso j'en ai fait une dynamique en aucun cas le selectionne les sheets

    demo de la boite de dialog perso

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Sub TEST()
        x = DialogPrintMultiSheet(ThisWorkbook)
        If IsArray(x) Then
            'MsgBox Join(x, ",")
            Sheets(x).PrintPreview
        Else
            MsgBox "annulée"
        End If
    End Sub
    Function DialogPrintMultiSheet(ByRef Wbk As Workbook)
        Dim Obj As Object, bout As Object
        Dim j As Integer
        'on créé la boite de dialog
        Set USF = ThisWorkbook.VBProject.VBComponents.Add(3)
        With USF: .Properties("Caption") = "Selection De Sheets à Imprimer": .Properties("Width") = 200: .Properties("Height") = 150: End With
        'on créé les checkbox au nombre de sheets
        For i = 1 To Wbk.Sheets.Count
            Set Obj = USF.Designer.Controls.Add("Forms.CheckBox.1", Sheets(i).Name, True)
            With Obj: .Caption = Sheets(i).Name: .Top = 5 + 20 * (i - 1): .Left = 10: End With
        Next
        USF.Properties("Height") = (Wbk.Sheets.Count + 2) * 25    ' on a juste le height du userform en fonction du nombre de sheet
        'on crée le bouton valider
        Set bout = USF.Designer.Controls.Add("Forms.CommandButton.1", "valider", True)
        With bout: .Left = 80: .Top = USF.Properties("Height") - 40: .Width = 55: .Height = 20: .Caption = "Valider": .BackColor = vbGreen: End With
        'on crée le bouton Annuler
        Set bout = USF.Designer.Controls.Add("Forms.CommandButton.1", "Annuler", True)
        With bout: .Left = 140: .Top = USF.Properties("Height") - 40: .Width = 55: .Height = 20: .Caption = "Annuler": .BackColor = RGB(255, 150, 150): End With
     
        With USF.CodeModule
            j = .CountOfLines
            .insertlines j + 1, "public tbl as String"
            .insertlines j + 2, "public donne as boolean "
            .insertlines j + 3, "Private Sub Valider_Click()"
            .insertlines j + 4, "For Each check In Me.Controls"
            .insertlines j + 5, "If TypeName(check) = ""CheckBox"" Then"
            .insertlines j + 6, "If check.Value = True Then tbl=tbl & "" "" &  check.Caption"
            .insertlines j + 7, "End If"
            .insertlines j + 8, "Next"
            .insertlines j + 9, "donne=true:if tbl="" "" then donne=false"
            .insertlines j + 10, "Me.Hide"
            .insertlines j + 11, "End Sub"
            .insertlines j + 12, "Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)"
            .insertlines j + 13, "Cancel=true:donne=false: Me.Hide "
            .insertlines j + 14, "End Sub"
            .insertlines j + 15, "Private Sub Annuler_Click()"
            .insertlines j + 16, "Cancel=true:donne=false: Me.Hide "
            .insertlines j + 17, "End Sub"
        End With
        VBA.UserForms.Add (USF.Name)
        With UserForms(UserForms.Count - 1)
            .Show
            If .tbl <> "" Then DialogPrintMultiSheet = Split(Trim(.tbl), " ") Else DialogPrintMultiSheet = False
        End With
        ThisWorkbook.VBProject.VBComponents.Remove (USF)
    End Function
    lance la sub test
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    A scubadoc31 :
    cette ligne également toute bête de code te permettra de choisir ton imprimante parmi celles disponibles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs(xlDialogPrinterSetup).Show
    A lancer avant l'instruction d'impression (voir ci-dessous).

    @theze selectionner!!!?????
    Oui, sélectionner. Car alors cette instruction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,1,,,TRUE,,FALSE)"
    imprime précisément les feuilles sélectionnées (et uniquement elles), tout simplement
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    a ce servir des checkbox autant le faire en array non???
    a supposer que les captions des check correspondent au nom de sheets et que les checkbox ne servent que pour les sheets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim tbl()
     for each ct in me.controls
     if typename(ct)="CheckBox" then i=i+1:redim preserve tbl(1 to i):tbl(i)=ct.caption
    next 
    sheets(tbl).print'(preview)
    pas besoins de selectionner!!!

    sinon a quoi ca sert d'utiliser des checkboxs ????
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    pas besoins de selectionner!!!
    cela évite un array totalement évitable et permet l'utilisation de l'option "sélection" (prévue par Microsoft-même) de l'instruction d'impression. *******
    Et pendant qu'on y est : pourquoi ne pas proposer d'imprimer, feuille par feuille sélectionnée; sans array; cela "agilisera" (heu ..) les "choses" ...
    Mais si l'on a une autre optique de ce qui est utile et/ou astucieux --->> en faire donc la proposition à qui de droit (Microsoft). Si l'idée est meilleure que la leur, ils seront preneurs


    ******* : il semble bien que patricktoulon ait perdu totalement de vue le but-même de la demande : n'imprimer que les feuilles choisies.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Médecin
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je dois dire que vous m'avez un peu perdu sur la fin....
    Je teste tout ça, et reviens vers vous avec les résultats.

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    ******* : il semble bien que patricktoulon ait perdu totalement de vue le but-même de la demande : n'imprimer que les feuilles choisies.
    absolument pas au contraire
    dans ma demo complete seul les sheets selectionnés pas les checkboxs sont imprimés
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    ton message 9 est alors surprenant et le code qui l"accompagne "ramasse" tout ce qui correspond aux checkboxes (ce qui n'est pas ce qui est souhaité)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    oui j'ai oublié la condition true mais dans ma demo complete non
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut
    Salut
    Plus il y a de boutons plus je suis allergique.
    En remplaçant les multiples Cases à Cocher par une seule liste (nommée LI ici), la programmation s'en trouve simplifiée.
    En ayant pris le soin d'initialiser les propriétés du contrôle Listbox (fenêtre des propriétés, je me contenterai de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub UserForm_Initialize()
      For n = 1 To 8: LI.AddItem Sheets(n).Name: Next
    End Sub
    Private Sub BoutonImprimer_Click()
      For n = 0 To LI.ListCount - 1
        Me.Hide     'indispensable
        If LI.Selected(n) Then
          Sheets(LI.List(n)).Visible = 1                    'si onglet masqué
          Application.Goto Sheets(LI.List(n)).[A1]      'pour voir
          ActiveSheet.PrintPreview
        End If
      Next
      Me.Show
    End Sub
    Remarques :
    - J'évite de mettre dans le même formulaire plusieurs sujets totalement indépendants.
    - Pour les onglets, il est préférable de passer par le (Name) (Feuil1 par exemple) que le Name (Ordonnance de l'exemple) donc, attention à la casse !
    - la programmation, pour le second formulaire (ce qui a été enlevé) peut, aussi, se simplifier grandement en utilisant l'outil Tableau dans les onglets.
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Médecin
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    MERCI A TOUS et mention spéciale à ORDONC.
    le deuxieme formulaire fonctionne bien.

    Cependant j'aurais une petite question subsidiaire...

    Dans le Formulaire , je renseigne la date en format dd/mm/aaaa.
    Cette date va se coller dans une textbox crée sur un .jpg d'arret de travail CERFA, sur un onglet du classeur.
    Mais il faut que je rajoute cette date en format texte. (dix-sept décembre deux mille dix-huit ou 2018) le format de l'année importe peu.
    Existe-t-il un code vba pour transformer la date de chiffre en texte??

    ENCORE MERCI

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    basé sur mon model de nombre en lettre dans les contribs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub testx()
    MsgBox date_en_lettres(Date)
    MsgBox date_en_lettres("15/06/1985")
    End Sub
    '
    Function date_en_lettres(dat)
    date_en_lettres = nblettres(Day(dat)) & Format(dat, " mmmm ") & nblettres(Year(dat))
    End Function
     
    Function nblettres(x)
        x = Format(x, "0000")
        Dim Mil&, Cen&, Dix&, mm$, CC$, N$
        unit = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf")
        unitdix = Array("", "dix", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante-dix", "quatre-vingt", "quatre-vingt-dix")
        mm = " mille": CC = " cent": Et = ""
        'base de controle  des segements
        Mil = Val(Left(x, 1)): Cen = Val(Mid(x, 2, 1)): Diz = Val(Mid(x, 3, 1)): U = Val(Right(x, 1)): Dix = Val(Mid(x, 3, 2))
        If Mil = 0 Then mm = ""    'si moins que mille mm=""
        If Mil = 1 Then Mil = 0    'pour eviter d'avoir "mille mille"
        If Cen = 0 Then CC = "" 'si moins que cent cc=""
        If Cen = 1 Then Cen = 0 'pour eviter d'avoir "cent cent"
     
        If Dix < 20 Then Diz = 0: U = Val(Mid(x, 3, 2)) 'si la tranche des dizaine est moins que 200 diz=0et u =la tranche dizaine (de 11 à 19)
     
        If Dix Mod 10 <> 0 Then Et = "-" ' un tiret sit pas de dizaine ronde
     
        If Dix > 20 And Dix < 80 And Val(Right(U, 1)) = 1 Then Et = " et " 'pour 21,31,41 etc... jusqu'a 71
        If Dix > 70 And Dix < 80 Or Dix > 90 Then Diz = Diz - 1: U = U + 10
        If Val(Right(x, 3)) < 10 Then Et = ""
        If Dix < 20 Then Et = ""
     
     N = unit(Mil) & mm & " " & unit(Cen) & CC & " " & unitdix(Diz) & Et & unit(U) & S
     If Right(x, 2) = "80" Or Right(x, 2) = "20" And Val(Right(x, 3)) > 200 Then N = N & "s"
       nblettres = N
    End Function
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  18. #18
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    cela fera dans quelques jours assez drôle à scubadoc31 d'apprendre que l'on est le "un janvier 2019"
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  19. #19
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    J'appelle l'attention sur le fait que le choix de traitement fait (le code proposé par ordonc) n'est pas le plus souhaitable.
    Il utilise en effet autant d'impressions (et donc de mises dans le spooler d'impression) que de feuilles à imprimer, ce qui est ralentisseur (mais pas uniquement).

    Il est vraisemblable qu'a échappé la boutade de ce passage
    Et pendant qu'on y est : pourquoi ne pas proposer d'imprimer, feuille par feuille sélectionnée; sans array; cela "agilisera" (heu ..) les "choses" ...
    de mon message d'hier à 19 h 47
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    corriger avant le end function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nblettres = IIf(x > 1, N, "premier")
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Macro impression avec choix des feuilles
    Par barrym78 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/06/2017, 17h19
  2. Réponses: 1
    Dernier message: 17/09/2014, 20h07
  3. Impression suite à un choix par case à cocher
    Par doudoufly dans le forum VBA Word
    Réponses: 1
    Dernier message: 02/07/2008, 23h05
  4. Choix feuilles de styles par l'utilisateur
    Par Irish dans le forum ASP.NET
    Réponses: 19
    Dernier message: 20/12/2006, 21h15
  5. [VB6] gestion des feuilles par des onglets
    Par kitsune dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/02/2006, 16h17

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