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 :

problème d'impression et procedure d'EDM.


Sujet :

VB.NET

  1. #21
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    C'est pas très satisfaisant parce que les espaces occupés sur le papier ne sont pas gérés comme avec les textes. Les lignes et images doivent donc être imprimées en positions absolues (ne mémorise pas la position X pour l’impression suivante et attention au saut de page).

    Mais ça permet de continuer avec la table des données à imprimer et d'imprimer dans une boucle.

    Voici le code de la procédure _PrintPage et une illustration des insertions faites dans PrepareImpression pour tester.
    Attention, si tu places effectivement des impressions de lignes et d'images, il te faut corriger tous les autres indices de la table.

    Je te laisse tester et je pourrai te donner des explication demain après-midi (si nécessaire).

    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
        Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
     
            Dim Ligne As String
            Dim Position As System.Drawing.PointF
            Dim Rectangle As RectangleF
            Dim Police As Font
            Dim HauteurLigne As Single = 0
            Dim PositionYPrec As Single = 0
            Static IndiceTable As Integer = 0
     
            Dim SeparateurSplit As Char() = {"~"}
            Dim LesValeurs() As String
     
            If IndiceTable = 0 Then
                PrepareImpression()
            End If
     
            Do
                Select Case TableAImprimer(IndiceTable).Texte.Substring(0, 6)  ' les 6 premiers caractères
                    Case "~~~~~~"  ' Choix du caractère ASCII 126 comme caractère "spécial", séparateur de données.
                        ' Rien à faire (donnée nulle pour faire "tampons" dans la table TableAImprimer
     
                    Case "~LIGNE"  ' chaque ~ suivant exprime une donnée : ~NomCouleur~Epaisseur~X1~Y1~X2~Y2
                        LesValeurs = TableAImprimer(IndiceTable).Texte.Split(SeparateurSplit)
                        Dim Epaisseur As Single = CType(LesValeurs(3), Single)
                        Dim X1 As Integer = CType(LesValeurs(4), Integer)
                        Dim Y1 As Integer = CType(LesValeurs(5), Integer)
                        Dim X2 As Integer = CType(LesValeurs(6), Integer)
                        Dim Y2 As Integer = CType(LesValeurs(7), Integer)
                        Dim Couleur As Color = Color.FromName(LesValeurs(2))
                        Dim Pinceau As New Pen(Couleur, Epaisseur)
     
                        If X2 > e.MarginBounds.Height Then  ' Attention, ici on n'est pas dans le relatif : X1 et X2 doivent tenir sur une même page
                            e.HasMorePages = True
                            Exit Sub
                        Else
                            e.HasMorePages = False
                        End If
     
                        e.Graphics.DrawLine(Pinceau, X1, Y1, X2, Y2)
     
                    Case "~IMAGE"  ' chaque ~ suivant exprime une donnée : ~Nom_et_Chemin_Du_FichierImage~X~Y
                        LesValeurs = TableAImprimer(IndiceTable).Texte.Split(SeparateurSplit)
                        Dim MonImage As Image = Image.FromFile(LesValeurs(2))
                        Dim X As Integer = CType(LesValeurs(3), Integer)
                        Dim Y As Integer = CType(LesValeurs(4), Integer)
     
                        If X + MonImage.Height > e.MarginBounds.Height Then   ' Attention, ici on n'est pas dans le relatif : X + la hauteur de l'image doit tenir sur une même page
                            e.HasMorePages = True
                            Exit Sub
                        Else
                            e.HasMorePages = False
                        End If
     
                        e.Graphics.DrawImage(MonImage, X, Y)
     
                    Case Else
                        Police = TableAImprimer(IndiceTable).Police
                        Ligne = TableAImprimer(IndiceTable).Texte
                        If TableAImprimer(IndiceTable).Valeur_Y_RelativePrec > 0 Then
                            PositionYPrec += TableAImprimer(IndiceTable).Valeur_Y_RelativePrec + HauteurLigne
                        Else
                            PositionYPrec += TableAImprimer(IndiceTable).Valeur_Y_RelativePrec
                        End If
                        HauteurLigne = Police.GetHeight(e.Graphics)
                        Position = New PointF(TableAImprimer(IndiceTable).Valeur_X_Rect, PositionYPrec)
                        Rectangle.Location = Position
     
                        If Position.Y + HauteurLigne > e.MarginBounds.Height Then
                            e.HasMorePages = True
                            Exit Sub
                        Else
                            e.HasMorePages = False
                        End If
     
                        e.Graphics.DrawString(Ligne, Police, Brushes.Black, Rectangle)
     
                End Select
     
                IndiceTable += 1
     
            Loop Until TableAImprimer(IndiceTable).Texte = String.Empty
        End Sub

    Nom : CodesImpression.jpg
Affichages : 187
Taille : 164,2 Ko


  2. #22
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Encore moi ...

    T'envoyer l'illustration de mes lignes de codes d'essais est bien, mais t'envoyer les codes est mieux :

    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
     
            ''*** EXEMPLE POUR 1 LIGNE ****
            'TableAImprimer(2).Texte = "~LIGNE~Red~2~50~50~50~200"  ' ~NomCouleur~Epaisseur~X1~Y1~X2~Y2
            'TableAImprimer(2).Police = Nothing
            'TableAImprimer(2).Valeur_X_Rect = Nothing
            'TableAImprimer(2).Valeur_Y_RelativePrec = Nothing
     
            ''*** EXEMPLE POUR 1 IMAGE ****  
            ' Attention, le dossier Resources est copié dans le dossier d'exécution du programme
            ' c'est-à-dire dans le dossier .....\Bin\Debug pendant les mises au points, puis c'est selon l'installation
            'TableAImprimer(2).Texte = "~IMAGE~Resources\Bouton1.jpg~50~100"  ' ~Nom_et_Chemin_Du_FichierImage~X~Y
            'TableAImprimer(2).Police = Nothing
            'TableAImprimer(2).Valeur_X_Rect = Nothing
            'TableAImprimer(2).Valeur_Y_RelativePrec = Nothing
     
            ''*** EXEMPLE POUR NE RIEN FAIRE ****  Espace réservé dans la table pour utilisation future
            'TableAImprimer(2).Texte = "~~~~~~"  ' Rien à faire
            'TableAImprimer(2).Police = Nothing
            'TableAImprimer(2).Valeur_X_Rect = Nothing
            'TableAImprimer(2).Valeur_Y_RelativePrec = Nothing
    Bonne nuit

  3. #23
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,

    Voici comment utiliser Word comme « générateur » de rapport. J’ai presque tout traduit de la version espagnole mais pas le document de base (DocPrimero.docx) pour l’exécution du programme (parce que je ne voulais pas refaire les vidéos).
    Toutefois, j’ai placé un doc de base (DocPrimeroTraduit.docx) avec les textes traduits en rouge que je te propose d’avoir sous les yeux lorsque tu regarderas la vidéo MettreDesChampsEtDesTables.mp4.

    Pour le reste, j’ai traduit les éléments du code qui étaient nommés en espagnol et tous les commentaires explicatifs.

    Je te propose de regarder d’abord les vidéos avant de lire le code :
    1. AjouterReferenceWord.mp4 (je suppose que tu connais déjà)
    2. MettreDesChampsEtDesTables.mp4 (si tu as un(e) spécialiste Word "sous la main", ça peut aider)
    3. Execution.mp4
    Ces 3 vidéos sont compressées dans le fichier : https://www.dropbox.com/s/ncs3um0ldb...Video.zip?dl=0

    Dans le code (Impresion_VB_Word_FR.zip) tu verras comment accéder aux différentes zones du document Word pour y placer tes données. Pour l’exemple du programme, ce sont les valeurs d’un DataGridView qui remplissent le formulaire Word. Dans ton programme, ce sera les valeurs de la table TableAImprimer(…).Texte qui rempliront le doc mais là, tu ne devras plus te soucier de la mise en page et des sauts de page, tout aura été réglé dans le doc de base.

    Je te souhaite beaucoup de satisfactions avec ce nouvel outil …

  4. #24
    Membre du Club
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 108
    Points : 45
    Points
    45
    Par défaut
    hola, tu as fais un boulot de titan !!!!, va falloir maintenant que je digère et surtout que je comprenne tout !, ca risque de prendre du temps, donc si tu n'as plus de nouvelles pendant 2 ou 3 jours c'est que je m'arracherai les cheveux !.

    Oserai je demander.....

    je suis un fan de fly simulateur, et bidouille assez bien en électronique (c'est mes études d'origine, même si je n'ai jamais pratiqué après, étant parti dans le pétrole), j'ai dans l'idée de faire un simulateur physique, avec des modules Ardino et des servos moteur de modélisme, ca te parle ?

  5. #25
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Pour Word, c'est pas si compliqué. Je te conseil de t'en tenir aux tableaux. Tu y places les libellés et tu les mets en forme. Dans VB, tu te contentes de remplir les cellules avec les valeurs, aux indices que tu connais (1 à n pour les lignes et 1 à n pour les colonnes).

    Pour les modules Ardino, j'ai entendu parler mais je ne connait rien à leur programmation, même jamais vu une ligne de code, sûr il suffit de me renseigner mais je ne suis pas trop intéressé (faudrait que ce soit vraiment très simple, ou que ça puisse se programmer en VB ).

    A bientôt ...

  6. #26
    Membre du Club
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 108
    Points : 45
    Points
    45
    Par défaut
    Arduino c'est en C++, ou je bidouille encore moins bien qu'en vb

  7. #27
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Oui, en parcourant quelques sites, je vois ...
    Je dirai que c'est un langage Arduino, qui utilise les mots clés Arduino, les instructions de contrôle C/C++ et la syntaxe C/C++.
    Pour ce qui est des aspects C/C++, je connais .
    Pour ce qui est des "outils" Arduino, c'est autre chose ...
    J'ai lu une leçon d'introduction (je t'envoie le lien par message privé), jusque là c'est cool ...

    Il y a aussi un forum sur ce site : https://arduino.developpez.com/

  8. #28
    Membre du Club
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 108
    Points : 45
    Points
    45
    Par défaut
    c'est assez simple, enfin quand on fait des choses simple, j'arrive sans trop de pbs a jouer avec des Leds, un peu comme je veux (chenillard, stromboscope, etc) j'ai fais qqles montages, allumage de lampes en fonction de la luminosité, déclenchement de relais à distance, allumages de series de leds de façon aléatoire et a vitesse progressive et aleatoire( j'ai galéré !) pilotage de servos moteurs depuis des potentiometres, mais tout ca reste basique.

    il faut maintenant que je le pilote depuis le pc en USB, et après récupérer les valeurs FS (avec le SDK) et les transformer, bagatelle, tu vois .....

  9. #29
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 175
    Points
    17 175
    Par défaut
    Salut

    Pour information, il existe un forum Arduino sur DVP
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  10. #30
    Membre du Club
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 108
    Points : 45
    Points
    45
    Par défaut
    Bon je crois que je vais laisser tomber, et en rester ou je suis, j'arrive pas avec word, je galère, je m’énerve et je vais te saouler !.

    J'arrive même pas a faire le rapprochement entre ton fichier sur la vidéo et le fichier impression que tu m'as envoyé, c'est dire !!!

    enfin merci d'avoir essayé!

  11. #31
    Membre du Club
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 108
    Points : 45
    Points
    45
    Par défaut
    bon j'arrive a integrer ton code dans mon programme, mais je ne sais pas de ou le lancer ? depuis final_datas print button ?, ensuite dans tes codes je ne vois pas comment ecrire que je veux tel ou telle datas ?

  12. #32
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Pas de problème, ce n'était qu'une suggestion.

    A bientôt,

    Phil

  13. #33
    Membre du Club
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 108
    Points : 45
    Points
    45
    Par défaut
    nos messages se sont croisés , car je m'obstine ....

  14. #34
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Nos messages de 15h31 se sont croisés


    Nous pouvons utilisez les 2 modes d'impressions dans un premier temps.


    Dans final_datas.vb, le PrintPreviewToolStripMenuItem_Click permet le Preview qui permet (par son bouton) d'imprimer avec PrintDocument1_PrintPage.
    Dans final_datas.vb, le PrintToolStripMenuItem_Click peut être réutilisé comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub PrintToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PrintToolStripMenuItem.Click
            impression.ImprimeAvecWord()
        End Sub
    Bien entendu, dans impression.vb, tu dois écrire la procédure Friend Sub ImprimeAvecWord().

    Voici cette procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Friend Sub ImprimeAvecWord()
    GoToWord()
    End Sub
    Et bien entendu, dans impression.vb, tu écris la procédure Private Sub GoToWord().

    Dans cette procédure, comme dans celle que je t'ai envoyée, ça commence comme ceci :

    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
       Private Sub GoToWord()
            Dim WAPP As New Microsoft.Office.Interop.Word.Application
            Dim UnDoc As New Microsoft.Office.Interop.Word.Document
            Dim Table As Microsoft.Office.Interop.Word.Table
     
             ' Travailler avec un double (FImpresion) du fichier pour ne pas modifier l'original
            Dim Punto As Integer
            Punto = ArchivoPrimeroParaImpresion.LastIndexOf(".")   ''' Je vois que j'ai oublié de traduire quelques détails ... :D)))
            Dim FImpresion As String = ArchivoPrimeroParaImpresion.Substring(0, Punto) & "_" & Trim(Now.Millisecond) & ".Docx"
            System.IO.File.Copy(ArchivoPrimeroParaImpresion, FImpresion)
     
            ' Ouvrir le fichier FImpresion et traiter
            UnDoc = WAPP.Documents.Open(FImpresion)
            WAPP.Visible = True
     
            ' ***  Remplir le document (exemple)
     
            Table = UnDoc.Tables(1)  ' Les tables sont indiciées de 1 à N, si N tables
            ' Dans une table, les données accédées par les indices des lignes et des colonnes :
            ' Table.Cell(Ligne, Colonne).Range.Text = ...     ' Ligne de 1 à N lignes et Colonne de 1 à N colonnes
            ' Si une seule cellule, c'est en ligne 1 et colonne 1
            Table.Cell(1, 1).Range.Text = ... ... ...  selon ce que tu dois écrire, par exemple :   TableAImprimer(0).Texte
    ... ... ...
    Quand tu auras démarré cette programmation, si tu as des difficultés, envoye-moi le code de impression.vb et ton doc de base, que je puisse tester ...

    ...

  15. #35
    Membre du Club
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 108
    Points : 45
    Points
    45
    Par défaut
    Ça avance, lentement, mais avance, le code est intégré et je n'ai plus de message d'erreur, la page word est créé, et je n'arrive à remplir que les 2 tables d'une seule cellule que j'ai créé, je n'arrive pas à remplir le tableau, il ne plante pas mais ne remplit pas non plus !?
    .......
    Je crois savoir ou je m.....e, je suis parti de ton exemple avec le datagrid, alors que je devrais partir de TableAImprimer(…).Texte seulement je n'ai pas la moindre idée ou la trouver ????

  16. #36
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,


    TableAImprimer(…) est dans ton programme, dans impression.vb, c'est la procédure que tu as du remplir, où tu as exagéré les espaces pour obtenir un saut de page ...

    Pour ce qui est d'imprimer plusieurs lignes dans un tableau qui a été créé avec peu de lignes (ce qui est normal), il faut ajouter les lignes quand on en a besoin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    '...
            Table.Rows.Add()
            L += 1    ' L est l'indice utilisé pour les lignes
            Table.Cell(L, 1).Range.Text = ""   ' dans cet exemple, on vide la cellule de la colonne 1, de la ligne L.
    '...

    ...

  17. #37
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonsoir,

    J’ai fait un exemple qui ne correspond sûrement pas à ta manière de présenter les données …

    Le fichier de base est mesdatasExemple.docx (à copier dans … Bin\Debug). Voici ce à quoi il ressemble avant exécution :
    Nom : mesdatasExemple.jpg
Affichages : 167
Taille : 23,4 Ko

    Le premier tableau contient 3 cellules sans traits de séparations. VB y place des infos en colonne 1 et en colonne 3. En colonne 2, le slashe est placé dans Word.

    Le deuxième tableau contient 2 colonnes et la première ligne contient les titres des colonnes en taille un peu plus grande et en caractères gras.
    VB place les valeurs à partir de la 2ème ligne et ajoute les lignes au fur et à mesure des besoins. C’est bien entendu ici que ça ne correspond pas à ta façon de présenter les données … La difficulté vient du fait que tes Label contiennent à la fois le libellé et la valeur (ordinairement, on utilise 2 zones distinctes pour y placer 2 textes distincts : le libellé et la valeur).

    En pièce jointe, Pierrelec.zip contient les codes complets de final_datas.vb et de impression.vb, ainsi que mesdatasExemple.docx .
    A l’exécution, dans le menu de final_datas, c’est Print qui commande l’impression par Word. La procédure GotoWord est commentée.


  18. #38
    Membre du Club
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 108
    Points : 45
    Points
    45
    Par défaut
    Ecoute, je ne sais pas comment te remercier, même si ça ne correspond pas, dans la mise en page à ce que je voudrais, la modification va être facile, et surtout CA MARCHE !!!!


    Me reste maintenant à faire une version 6 plus intuitive et ce sera pas mal du tout !

    encore merci.


    Pierre

  19. #39
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut


    Si je peux me permettre ...

    Pourquoi ne séparerais-tu pas les libellés et les valeurs sur tes écrans ? Cela ne devrait pas être trop difficile puisqu'il en est ainsi dans ta DB.

    Tu pourrais ensuite remplir la TableAImprimer() comme ceci (ce n'est qu'une illustration) :

    TableAImprimer(2).Texte = "Le texte du libellé qui vient là"
    TableAImprimer(2).Police = ...
    TableAImprimer(2) ...X... = ...
    TableAImprimer(2) ...Y... = ...


    TableAImprimer(3).Texte = "Le texte de la valeur pour le libellé qui est à côté (le 2)"
    TableAImprimer(3) ... = ...
    TableAImprimer(3) ... = ...
    TableAImprimer(3) ... = ...

    et ainsi de suite, les indices pairs (4, 6, ... ) concernant les libellés et les impairs concernant les valeurs correspondantes.

    Pour l'impression directe, toutes les lignes de la TableAImprimer() sont utiles.

    Pour l'impression via Word, les lignes de la TableAImprimer() qui concernent les valeurs X et Y sont inutiles et 2 situations sont à envisager :
    1. soit tu as écrit les libellés dans le doc de base, alors seules les lignes de la TableAImprimer(IndiceImpair).Texte sont utiles;
    2. soit tu n'as pas écrit les libellés dans le doc de base, alors toutes les lignes de la TableAImprimer().Texte sont utiles, et éventuellement les lignes TableAImprimer().Police.


    A toi de voir ...

    Passe une excellente journée

  20. #40
    Membre du Club
    Homme Profil pro
    Drilling enginer
    Inscrit en
    Décembre 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Drilling enginer
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 108
    Points : 45
    Points
    45
    Par défaut
    il aurait meme plus simple, la mise en page Word sera toujours la meme, pourquoi ne pas mettre une fois pour toute les libéllés dans la mise en page word et ne lui faire que remplir que les valeurs !!

Discussions similaires

  1. problème d'impression
    Par davedenice dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 28/07/2005, 16h57
  2. [PowerBuilder] Problème d'impression datawindow composite
    Par jpdar dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 17/05/2005, 13h33
  3. Réponses: 16
    Dernier message: 17/03/2005, 13h54
  4. [Rave] problème d'impression
    Par romstarr dans le forum Rave
    Réponses: 2
    Dernier message: 09/06/2004, 15h48
  5. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37

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