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 :

Re : génération automatique de liste / nom word et vb.net


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut Re : génération automatique de liste / nom word et vb.net
    Salut les amis !!
    Je développe une application en vb.net et sql serveur.
    Dans celle ci, j'ai une génération automatique de document je récupère les informations d'un client dans ma base et les envoi sur une page word déjà existante à des emplacements prévu grâce aux signets.
    j'arrive à imprimer les données de plusieurs client, le problème c'est que ceux-ci s'ouvrent chacun sur une page différente alors que ce que je recherche est une liste des information.

    voici mon code :
    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
     
    tout d'abord, je fais une requète pour récupérer les données qui m'interessent
    commande.CommandText = "SELECT nom_expert, prenom_expert, code_expert, code_postal_expert, ville_expert FROM expert "
     
    on enregistre le resultat de la requete dans le reader
    reader = commande.ExecuteReader
     
    on affiche les données dans les labels
     
    label_nom_expert.Text = reader.GetOrdinal("nom_expert")
    label_prenom_expert.Text = reader.GetOrdinal("prenom_expert")
    label_code_expert.Text = reader.GetOrdinal("code_expert")
    label_cp.Text = reader.GetOrdinal("code_postal_expert")
    label_ville.Text = reader.GetOrdinal("ville_expert")
     
    on ferme le reader
    reader.Close()
     
     
    Déclaration de la variable MonWord
    Dim MonWord AsObject
     
    Initialisation de la variable
    MonWord = CreateObject("Word.Application")
     
    Accepter que Word apparaisse
    MonWord.Visible = True
     
    Ouverture du fichier test.doc
    MonWord.Documents.Open("C:\...\document.doc")
     
    'Positionnement dans le document sur les signets
    'Saisie du contenu des textbox dans le document Word
     
    MonWord.ActiveDocument.Bookmarks("nom_expert").Select()
    MonWord.Selection.InsertAfter(label_nom_expert.Text)
     
    MonWord.ActiveDocument.Bookmarks("prenom_expert").Select()
    MonWord.Selection.InsertAfter(label_prenom_expert.Text)
     
    MonWord.ActiveDocument.Bookmarks("code_expert").Select()
    MonWord.Selection.InsertAfter(label_code_expert.Text)
     
    MonWord.ActiveDocument.Bookmarks("code_postal_expert").Select()
    MonWord.Selection.InsertAfter(label_cp.Text)
     
    MonWord.ActiveDocument.Bookmarks("ville_expert").Select()
    MonWord.Selection.InsertAfter(label_ville.Text)
     
    'MonWord.ActiveDocument.Save() ' Sauvegarde du document
     
    'MonWord.ActiveDocument.Printout() ' Lancement de l'impression
     
    'MonWord.Quit() ' Ferme Word
    'MonWord = Nothing ' Ferme Word
    les signets sont nommés sur le document word...

    par contre, comment faire pour que la page du document word affiche toute la liste

    ex:


    nom X prénom X code X code postal X ville X
    nom Y prénom Y code Y code postal Y ville Y
    nom Z prénom Z code Z code postal Z ville Z
    nom A prénom A code A code postal A ville A
    nom B prénom B code B code postal B ville B
    nom C prénom C code C code postal C ville C


    etc....

    la logique voudrait qu'on répète les signets sur la page word... mais combien en mettre car on ne sait pas combien il y aura d'expert au total...

    cette méthode fonctionne correctement lorsque je veux uniquement un expert...
    de plus, ça fonctionne également quand il me met un expert par page...
    mais moi, je veux la liste de tous les experts sur la même page...

    merci d'avance...
    c'est très important...

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Salut,
    tu es vraiment obliger d'utiliser les signet???
    pour ma part quand je génère du word d'une table quelconque je fais comme ca : (extrait direct d'un de mes programmes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                For i = 0 To dt.Tables("rechnum").Rows.Count - 1
                    nbdos = i + 1
                    docum.Content.InsertAfter(nbdos.ToString +...+ vbCrLf)
    
                Next i
    c'est plus simple sans signet non???
    de cette manière tu remplis du nombre de ligne que tu veux...

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Oué ! si j'ai utilisé les signets c'est parce que je n'ai pas trouvé comment faire autrement !!

    Pourrais -tu s'il te plait détailler un peu ton code dire que je comprenne ??
    Merci beaucoup Sankasssss !!

  4. #4
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    donc voici toute la fonction :
    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
                Dim appli As New Microsoft.Office.Interop.Word.Application
                Dim docum As Microsoft.Office.Interop.Word.Document
                docum = appli.Documents.Add
     
     
                Dim indiceDeb, indiceFin As Integer
                Dim indiceDeb2, indiceFin2 As Integer
                Dim dRange As Microsoft.Office.Interop.Word.Range
     
     
                dRange = docum.Range
     
                indiceDeb = docum.Content.Text.Length
                docum.Content.InsertAfter(NomListe.ToString & vbCrLf & vbCrLf)
                indiceFin = docum.Content.Text.Length
                appli.Selection.SetRange(indiceDeb, indiceFin - 2)
                appli.Selection.Font.Bold = True
                appli.Selection.Font.Size = 12
                appli.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter
                appli.Selection.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineSingle
                indiceDeb = docum.Content.Text.Length - 2
                '----
                Dim i As Integer
                Dim nbdos As Integer
     
                For i = 0 To dt.Tables("rechnum").Rows.Count - 1
                    nbdos = i + 1
                    docum.Content.InsertAfter(nbdos.ToString + ") " + dt.Tables("rechnum").Rows(i)(1).ToString() + dt.Tables("rechnum").Rows(i)(2).ToString() + " " + dt.Tables("rechnum").Rows(i)(3).ToString() + "   " + dt.Tables("rechnum").Rows(i)(4).ToString() & vbCrLf)
     
                Next i
     
                appli.Selection.SetRange(indiceDeb, indiceFin - 2)
                appli.Selection.Font.Size = 11
                appli.Selection.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineSingle
                indiceDeb = docum.Content.Text.Length
                indiceFin = docum.Content.Text.Length
                'MsgBox(NomListe)
                Dim fs As IO.Directory
                If Not fs.Exists("c:\Statistique\") Then
                    fs.CreateDirectory("c:\Statistique\")
                End If
                docum.SaveAs("c:\Statistique\" + NomListe + ".doc")
                docum.Close()
                appli.Quit()
    et une partie d'une autre :
    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
    docum.Content.InsertAfter(vbCrLf)
            docum.Content.InsertAfter("Répartition des " + (Nbrdos1 - Nbrdos12).ToString + " dossiers " & vbCrLf)
            indiceFin = docum.Content.Text.Length
            appli.Selection.SetRange(indiceDeb, indiceFin - 2)
            appli.Selection.Font.Size = 12
            appli.Selection.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineSingle
            indiceDeb = docum.Content.Text.Length
            docum.Content.InsertAfter(vbCrLf)
            docum.Content.InsertAfter("3) 22-Retraits : " + NbrdosRetrait.ToString & vbCrLf)
            docum.Content.InsertAfter("4) 23-Suspends : " + NbrdosSuspends.ToString & vbCrLf)
            docum.Content.InsertAfter("5) Arrêts en fin d'aide : " + Nbaidefin.ToString & vbCrLf)
            docum.Content.InsertAfter("6) Arrêts en fin d'aide suivi d'un refus d'une nouvelle aide : " + Nbarretfinsuivi.ToString & vbCrLf)
            indiceFin = docum.Content.Text.Length
            appli.Selection.SetRange(indiceDeb, indiceFin - 2)
            appli.Selection.Font.Size = 12
            indiceDeb = docum.Content.Text.Length
    Cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docum.Content.InsertAfter
    insère du texte après le dernier caractère,
    Si tu veux passer à la ligne il suffit d'insèré la constante vb : vbCrLf
    comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docum.Content.InsertAfter(vbCrLf)
    tu peux aussi faire une sélection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appli.Selection.SetRange(indiceDeb, indiceFin - 2)
    sur laquelle tu appliqueras des styles...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    appli.Selection.Font.Size = 12
    appli.Selection.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineSingle
    Bien à toi

  5. #5
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Je te conseil d'aller voir la rubrique de l'aide msdn qui traite de la chose, tu apprendra beaucoup de chose intéressante pour personnaliser ton document :
    http://msdn.microsoft.com/fr-fr/libr...we(VS.80).aspx

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut MERCI !!!!
    MERCI MERCI !!!!
    Je crois que je ne peut pas en dire plus !!!!

  7. #7
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    de rien
    pense à marquer le sujet comme "résolu"
    Bonne soirée et bon développement

Discussions similaires

  1. Génération automatique de noms de variables
    Par Bktero dans le forum MATLAB
    Réponses: 11
    Dernier message: 02/07/2009, 09h33
  2. Génération automatique de noms de fichiers
    Par Invité dans le forum Langage
    Réponses: 7
    Dernier message: 02/05/2008, 09h41
  3. Réponses: 7
    Dernier message: 02/07/2007, 14h37
  4. Réponses: 2
    Dernier message: 09/03/2007, 09h58
  5. Réponses: 3
    Dernier message: 25/01/2006, 17h54

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