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 :

de xls vers Word puis sauver toto.doc sous tata.doc


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut de xls vers Word puis sauver toto.doc sous tata.doc
    Ce bout de VB fonctionne à la première exécution après avoir ouvert le classeur. Le fichier est bien renommé et placé à l'endroit voulu.
    A partir de la seconde exécution, le fichier doc n'est pas renommé, pas fermé ...Pourtant les variables sont ok!!!

    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
    Sub EcritPV_Levage()
       'Document PV_LEVAGE.doc contenant les signets: "TOTOA" à "TOTOj"
        'Renseigner ce doc depuis une base de donnée xls
    Dim LePV As String
        Dim ObjWord As Word.Application
        Dim LeDocWord As Word.Document
        Dim vRefPv
        Dim NumLg
        Dim vSignet0, vSignet1, vSignet2, vSignet3, vSignet4, vSignet5, vSignet6, vSignet13, _
            vSignet7, vSignet8, vSignet9, vSignet10, vSignet11, vSignet12, vNewNom, vChemin As String
        vChemin = ""
    On Error Resume Next
        
    vChemin = ActiveWorkbook.Path & "\"
    Style = vbYesNo + vbQuestion
    
    Title = "VALIDATION DU PV A EDITER"
    
    
    Sheets("PV_LEVAGE").Activate
    vRefPv = InputBox(Prompt:="Taper la valeur recherchée. ")
    Cells.Find(What:=(vRefPv), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder _
    :=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Activate
    With Application.ActiveCell
        NumLg = .Row
    Msg = "Créer un PV avec les infos de la ligne N° " & NumLg
    End With
        ActiveCell.EntireRow.Select
        
        Application.ScreenUpdating = True
    
        réponse = MsgBox(Msg, Style, Title)
    
    If réponse = vbYes Then
     
        vSignet0 = ActiveCell.Offset(0, 0).Value
        vSignet1 = ActiveCell.Offset(0, 1).Value
        vSignet2 = ActiveCell.Offset(0, 2).Value
       
    ' vNewNom futur nom du fichier .doc
        vNewNom = "PV_" & (vSignet0) & (vSignet1) & ".doc"
    
            LePV = ThisWorkbook.Path & "\PV_Original.doc"
        
        Set ObjWord = CreateObject("Word.Application")
            
    
        Set LeDocWord = ObjWord.Documents.Open(LePV)
    ObjWord.Visible = True
    
    
    With LeDocWord
    
            'Le nom du signet dans le document word est ici "TOTOA"
                .Bookmarks("TOTOA").Range.Text = vSignet0
            'Le nom du signet dans le document word est ici "TOTOB"
                .Bookmarks("TOTOB").Range.Text = vSignet1
                .Bookmarks("TOTOC").Range.Text = vSignet2
                .Bookmarks("TOTOD").Range.Text = vSignet3
                 .Bookmarks("TOTON").Range.Text = vSignet13 & " / "
    End With
      
      ChangeFileOpenDirectory vChemin 'C'est là que ça ne va plus
        ActiveDocument.SaveAs Filename:=vNewNom
    
         ActiveDocument.Close wdDoNotSaveChanges
      
        ObjWord.Quit
     
     
    'retour excel et marque le document comme édité
        ActiveCell.Value = "Edité le " & Date
    
    Application.ScreenUpdating = True
    'désélection de la ligne et retour haut de la feuille
        End If
        Application.Goto Reference:=ActiveSheet.Range("A2"), Scroll:=True
        ActiveWorkbook.Save
    
    End Sub
    Qui peut éclairer ma lanterne?
    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Essaie ça
    ' ChangeFileOpenDirectory vChemin 'C'est là que ça ne va plus alors tu l'effaces
    ActiveDocument.SaveAs Filename:=vChemin & vNewNom
    Tu dis

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Essai infructueux
    Essayé, pas satisfaisant,
    merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Remplace ActiveDocument par LeDocWord.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut pb contourné
    j'ai mis dans ma prose ceci et cela marche à chaque fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    vNewNom = "PV_" & (vSignet0) & (vSignet1) & ".doc"
     
    LeDocWord.SaveAs Filename:="D:\Mes documents Jean Claude\documents\Dossiers\BUREAUTIQUE\PV2007\" & vNewNom
    Dans l'autre cas à la 1° exécution enregistrement à l'endroit désiré, aux suivantes sous "mes documents"

    j'aimerai bien comprendre!!!

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Fixe le chemin une fois pour toutes au départ.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Chemin = "D:\Mes documents Jean Claude\documents\Dossiers\BUREAUTIQUE\PV2007\"
    LeDocWord.SaveAs Filename:= Chemin & vNewNom
    Si ChangeFileOpenDirectory fonctionne comme ChDir, le "driver" n'est pas changé. Tu dois également le modifier.
    L'instruction ChDir change le dossier par défaut mais pas le lecteur par défaut.
    Pour changer de lecteur, tu as chdrive (cf. F1)
    Par contre, si tu fixes le chemin, tu peux entegistrer où tu veux.
    C'est toi qui vois.
    A+

Discussions similaires

  1. [Excel] De xls vers csv sans objet COM (php4 sous linux)
    Par AntaresJon dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 26/02/2009, 17h13
  2. Réponses: 6
    Dernier message: 13/03/2008, 10h47
  3. Réponses: 2
    Dernier message: 12/02/2007, 13h39
  4. Réponses: 3
    Dernier message: 21/08/2006, 13h03

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