Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/05/2011, 16h18   #1
Membre du Club
 
Homme Stéphane
Inscription : octobre 2003
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme Stéphane

Informations forums :
Inscription : octobre 2003
Messages : 65
Points : 56
Points : 56
Par défaut Problème intégration de tableaux par automation Word

Bonjour à tous,

je viens ici car j'ai un gros souci... mon application doit exporter des données vers un document éditable au format Word avec de grosses contraintes de formatage...
Je créé par automation des tableaux que je remplis à la volée. les premiers tableaux fonctionnent parfaitement jusqu'à un certain moment où tout commence à s'enchevêtrer... résultat, je me retrouve à continuer mon automation à l'intérieur d'une cellule de tableau...
En passant en mode Débogage Pas-à-pas, tout fonctionne parfaitement !!!!!!

C'est comme s'il y avait un problème de délai.. L'action suivante est débutée avant la fin de l'action précédente...

Quelqu'un aurait-il une idée pour résoudre ce problème ?? Merci d'avance.

En attendant, je continue d'investiguer...
Steph9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 18h33   #2
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonjour.

Tu pourrais utilement montrer la partie du code concernée, ou mieux : un exemple simplifié du pb! Une sorte de démonstrateur...

Cordialement,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 11h12   #3
Membre du Club
 
Homme Stéphane
Inscription : octobre 2003
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme Stéphane

Informations forums :
Inscription : octobre 2003
Messages : 65
Points : 56
Points : 56
Merci pour la réponse c'est vrai que c'est difficile à comprendre...

voilà le résultat en image... En fait ce qui est surligné en rouge devrait être en dessous du tableau... Pire, le petit tableau est créé à l'intérieur du champ AAAAAAAAAAAA, du coup coupé en 2... C'est comme si les actions du code vba ne s'éxécutaient pas dans l'ordre indiqué... Sauf si je le fais en pas-à-pas, là tout est nickel d'où ma question sur la temporisation...

Voici le code... Merci d'avance

Code :
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
For i = 1 To nbSC
        With wdApp.Selection
            .Font.Bold = True
            .TypeText Text:=RstSC!SC_Numero & " - " & RstSC!PV & " (CB " & RstSC!SC_Code & ")" & _
                vbCrLf & vbCrLf
            .Font.Bold = False
            .TypeText Text:=RstSC!SC_Description & vbCrLf
            'photo
             If Not IsNull(RstSC!Lien) Then
                Dim S As InlineShape
                Set S = wdApp.Selection.InlineShapes.AddPicture(RstSC!Lien, False, True)
                S.Height = 100
                S.Width = 133
             End If
           .TypeText Text:=vbCrLf & vbCrLf
 
        End With
 
        'insertion tableau P
        wdApp.Selection.ParagraphFormat.SpaceBefore = 4
        wdApp.Selection.ParagraphFormat.SpaceAfter = 4
        wdApp.ActiveDocument.Tables.Add Range:=wdApp.Selection.Range, NumRows:=2, NumColumns:=4, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
        With wdApp.Selection.Tables(1)
            If .style <> "Grille du tableau" Then .style = "Grille du tableau"
            .ApplyStyleHeadingRows = True
            .ApplyStyleLastRow = True
            .ApplyStyleFirstColumn = True
            .ApplyStyleLastColumn = True
        End With
        wdApp.Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
        wdApp.Selection.Borders(wdBorderTop).LineStyle = wdLineStyleNone
        wdApp.Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
        wdApp.Selection.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
        wdApp.Selection.MoveRight Unit:=wdCharacter, Count:=2
        wdApp.Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        wdApp.Selection.Cells.Merge
        wdApp.Selection.Font.Bold = True
        wdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
        wdApp.Selection.TypeText Text:="Entête"
        wdApp.Selection.MoveDown Unit:=wdLine, Count:=1
        wdApp.Selection.Font.Bold = False
        wdApp.Selection.MoveLeft Unit:=wdCharacter, Count:=3
        wdApp.Selection.TypeText Text:="col1"
        wdApp.Selection.MoveRight Unit:=wdCell
        wdApp.Selection.TypeText Text:="Col2"
        wdApp.Selection.MoveRight Unit:=wdCell
        wdApp.Selection.TypeText Text:="Col3"
        wdApp.Selection.MoveRight Unit:=wdCell
        wdApp.Selection.TypeText Text:="Col4"
        wdApp.Selection.SelectRow
        wdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
 
    'Ajout des prelevements
        Dim RstPR As DAO.Recordset, nbPR As Long
        Set RstPR = dbs.OpenRecordset("SELECT ....;")
        RstPR.MoveLast:     nbPR = RstPR.RecordCount:    RstPR.MoveFirst
 
        For j = 1 To nbPR
            'creation new line
            wdApp.Selection.MoveDown Unit:=wdLine, Count:=1
            wdApp.Selection.InsertRowsAbove 1
            'remplissage
            wdApp.Selection.TypeText Text:=RstPR!PR_NumeroC:        wdApp.Selection.MoveRight Unit:=wdCharacter, Count:=1
 
            wdApp.Selection.TypeText Text:=RstPR!PR_Description:     wdApp.Selection.MoveRight Unit:=wdCharacter, Count:=1
            wdApp.Selection.TypeText Text:="Positif"
 
            wdApp.Selection.MoveRight Unit:=wdCharacter, Count:=1
 
            wdApp.Selection.TypeText Text:=Nz(RstPR!PR_Interp)
 
            RstPR.MoveNext
        Next
 
        wdApp.Selection.Font.Bold = False
        wdApp.Selection.MoveDown Unit:=wdLine, Count:=1
        wdApp.Selection.TypeText Text:=vbCrLf & vbCrLf & vbCrLf & vbCrLf
        wdApp.Selection.MoveEnd
 
        RstSC.MoveNext
    Next
Images attachées
Type de fichier : jpg Pas de nom.jpg (117,0 Ko, 3 affichages)
Steph9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 15h42   #4
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonjour.

D'entrée, tu travailles avec l'objet Selection. Comment t'assures-tu que c'est le bon objet ou le bon Range qui est sélectionné? En plus cette façon de travailler fait des temps d'exécution longs.
Personnellement, je n'aime pas : je préfère travailler avec les objets et les Range au travers de signets.

J'ai conscience que ce n'est qu'un avis général.

Cordialement,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 15h57   #5
Membre du Club
 
Homme Stéphane
Inscription : octobre 2003
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme Stéphane

Informations forums :
Inscription : octobre 2003
Messages : 65
Points : 56
Points : 56
Par défaut Youpi !!!!!

problème résolu en fait le problème venait du fait de réussir à sortir du tableau pour écrire la suite lorsque la dernière cellule sélectionnée contenait plus d'une ligne... vu que je sortais avec MoveDown Unit:=wdLine, Count:=1...

si ça peut aider quelqu'un... enfin plus spécifique tu meurs !!
Steph9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 16h12   #6
Membre du Club
 
Homme Stéphane
Inscription : octobre 2003
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme Stéphane

Informations forums :
Inscription : octobre 2003
Messages : 65
Points : 56
Points : 56
Citation:
Envoyé par pgz Voir le message
Bonjour.

D'entrée, tu travailles avec l'objet Selection. Comment t'assures-tu que c'est le bon objet ou le bon Range qui est sélectionné? En plus cette façon de travailler fait des temps d'exécution longs.
Personnellement, je n'aime pas : je préfère travailler avec les objets et les Range au travers de signets.

J'ai conscience que ce n'est qu'un avis général.

Cordialement,

PGZ
oups, j'ai pas actualisé ma fenetre, je n'avais pas vu la réponse !! désolé

en fait je n'ai pas trop le choix car je ne maitrise pas assez pour faire autre chose En fait tout part d'Access à la base. Si tu as des liens à me conseiller sur ce sujet, je suis preneur ! Niveau temps d'éxécution, pour moi c'est gérable, mais si ça peut être plus propre, ça m'intéresse !

Mer
Steph9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 16h38   #7
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Hello

Citation:
Envoyé par Steph9 Voir le message
.Si tu as des liens à me conseiller sur ce sujet, je suis preneur ! Niveau temps d'éxécution, pour moi c'est gérable, mais si ça peut être plus propre, ça m'intéresse !
Regarde par exemple Comment exporter des données Excel vers plusieurs signets d'un document Word ?
Aucun .Select ni Selection. n'est nécessaire!

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 10h13   #8
Membre du Club
 
Homme Stéphane
Inscription : octobre 2003
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme Stéphane

Informations forums :
Inscription : octobre 2003
Messages : 65
Points : 56
Points : 56
merci pour le lien. En fait j'utilise déjà cette méthode mais pour cette partie là je ne maîtrise pas le nombre de tableaux, je ne peux donc pas créer les tableaux en avance dans le modèle Word...
Steph9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h09.


 
 
 
 
Partenaires

Hébergement Web