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

VBA Word Discussion :

Problème de boite de dialogue


Sujet :

VBA Word

  1. #1
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 257
    Points : 87
    Points
    87
    Par défaut Problème de boite de dialogue
    je passe par excel pour programmer sous forme de publipostage des fichiers Word. le probleme est qu'avec ma macro quand j'ai de la chance ma boite de dialogue s'affiche et j'enregistre correctement mes fichiers word et quand j'ai pas de chance la macro ce plante et tourne sans jamais ouvrir la boite de dialogue. je ne comprend absolument rien à ce phénomène. voici la macro en question :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    Private Sub CommandButton1_Click()
     
        Dim WordApp As Object, WordDoc As Object
        Const wdDialogFileSaveAs = 84
        Dim Fichier As String, Titre As String
        Dim i As Byte, Lign As Byte, NbLign As Byte, Cel As Byte, NvLign As Byte
        Dim nbpage As Byte, cptpage As Byte
     
        Application.DisplayAlerts = False
        Lign = 21
        While (ActiveSheet.Cells(Lign, 1) <> "")
            Lign = Lign + 1
        Wend
     
        Titre = "Transmission Réclam KX " & TextBox1 & " du " & Format(TextBox2, "dd mm yyyy")
     
        repertoir = Environ("HOMEPATH") & "\"
        If Lign = 21 Then
               'Adhérent Unique
               Fichier = "C:\macros\Production\corporate\Décès Collectif\Transmission Réclam KX\model\transrclkxuniq.doc"
     
               If Dir(Fichier) <> "" Then
                   Set WordApp = CreateObject("word.application")
                   Set WordDoc = WordApp.Documents.Open(Fichier)
     
                   For i = 1 To 14
                       If i = 6 Then
                           dform = Cells(6, i)
                           madate = Format(dform, "dd mmmm yyyy")
                           WordDoc.Bookmarks("Signet" & i).Range.Text = madate
                       ElseIf i = 8 Then
                           dform = Cells(6, i)
                           nombr = Format(dform, "#,0")
                           WordDoc.Bookmarks("Signet" & i).Range.Text = nombr
                       Else
                           WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(6, i)
                       End If
                   Next i
     
               Else
                   MsgBox "Fichier introuvable"
                   End
               End If
     
        ElseIf Lign > 21 Then
     
                'Adhérents Multiples
                Fichier = "C:\macros\Production\corporate\Décès Collectif\Transmission Réclam KX\model\transrclkxmulti.doc"
     
                If Dir(Fichier) <> "" Then
                    Set WordApp = CreateObject("word.application")    'ouvre une session Word
                    Set WordDoc = WordApp.Documents.Open(Fichier)
     
                    For i = 1 To 12
                        If i = 6 Then
                           dform = Cells(17, i)
                           madate = Format(dform, "dd mmmm yyyy")
                           WordDoc.Bookmarks("Signet" & i).Range.Text = madate
                       ElseIf i = 8 Then
                           dform = Cells(17, i)
                           nombr = Format(dform, "#,0")
                           WordDoc.Bookmarks("Signet" & i).Range.Text = nombr
                        Else
                           WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(17, i)
                       End If
                    Next i
     
                    'Gestion du tableau
                    NbLign = Lign - 21
                    NvLign = 21
                    y = 1
                    For Cel = 2 To (NbLign + 1)
                        WordDoc.Tables(1).Rows.Add
                        WordDoc.Tables(1).Columns(1).Cells(Cel).Range.Text = y
                        WordDoc.Tables(1).Columns(2).Cells(Cel).Range.Text = Range("A" & NvLign)
                        NvLign = NvLign + 1
                        y = y + 1
                    Next Cel
                    WordDoc.Tables(1).Rows(1).shading.backgroundpatterncolor = RGB(160, 160, 160)
                    WordDoc.Tables(1).Columns(1).shading.backgroundpatterncolor = RGB(160, 160, 160)
                    WordDoc.Tables(1).Rows(1).HeadingFormat = True
     
                    'Vide la liste des adhérents
                    Range("A21:A" & (Lign - 1)).ClearContents
     
                Else
                    MsgBox "Fichier introuvable"
                    End
                End If
        End If
     
        'Affiche la boite dialogue de sauvegarde avec la pre-saisie de la réf 
        With WordApp.Dialogs(wdDialogFileSaveAs)
             .Name = repertoir & Titre & ".doc"
             .Show
        End With
     
        WordApp.Visible = True    'affiche le document Word
        Unload Me
     
    End Sub

  2. #2
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 14
    Points : 14
    Points
    14
    Par défaut
    Si je comprends bien quand ça foire, ton code ne dépasse jamais la ligne 13, c'est ça ?

    Si tu n'en es pas sûr, vérifie-le en mettant un stop à la ligne 14, tu verras bien si elle est atteinte.

    Si c'est bien ça, essaye de remplacer "" par vbNullString pour voir si ça change quelque chose.

    Si ça foire toujours, essaye de mettre une boîte de dialogue dans la boucle en affichant entre guillemets (ou d'autres caractères visibles) le contenu de la cellule testée, qui devrait donc être différent de "".

    En tâtonnant, tu devrais finir par trouver où ça coince...

    Marc

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Tu as une boucle inutile qui tourne dans le beurre et qui fait que lign se dirige se dirige vers le dépassement de capacité et le plantage assuré. Ta boucle ne faut aucun traitement et tu ne peux jamais avoir de lign plus petit que 21.


    Citation Envoyé par saninx Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Application.DisplayAlerts = False
        Lign = 21
        While (ActiveSheet.Cells(Lign, 1) <> "")
            Lign = Lign + 1
        Wend
    Tu ne fais aucun traitement dans ta macro à cause d'une boucle qui sert à rien.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  4. #4
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 257
    Points : 87
    Points
    87
    Par défaut
    non plutot je pense au niveau du code pour ma boite de dialogue ligne 93

Discussions similaires

  1. C++/CLI : Problème avec boite de dialogue
    Par jlg_47 dans le forum C++/CLI
    Réponses: 1
    Dernier message: 03/01/2014, 10h18
  2. Problème avec boite de dialogue enregistrer sous
    Par biddal dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/08/2011, 10h58
  3. problème fermeture boite de dialogue
    Par totoscill dans le forum MFC
    Réponses: 15
    Dernier message: 30/09/2009, 10h55
  4. Problème avec boite de dialogue pour fermer JFrame
    Par adn013 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 04/09/2007, 15h37
  5. Problème MAJ boite de dialogue
    Par Nemesis007 dans le forum MFC
    Réponses: 2
    Dernier message: 07/04/2007, 00h24

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