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 :

[VBA-E]thisworkbook.path


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 335
    Par défaut [VBA-E]thisworkbook.path
    bonjour ( je sais plus ou posté avec les changement de forum... )

    alors voila

    j'ai un programme VBA dans lequel je fait des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Adresse = ThisWorkbook.Path
    pour pouvoir transporter mon code plus facilement ( utilisation sur plusieur machines)

    mon probleme est le suivant.. il ne se reinitialise pas..

    je m'explique...le but est de recuperé le nom de tout les .xls d'un repertoire... mais quand je change mon code de repertoire...il me renvoi les .xls du premier repertoire dans lequel je l'ai mis...

    pourquoi il ne se reinitialise pas ?

    ( je pense avoir etait clair dites si je me trompe.. si vous avez besoin de plus de detail...)

    merci

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ThisWorkbook.path ... renvoi le répertoire ou est stocké le classeur contenant ton code... maintenant faut voir comment tu l'utilise ensuite ta variable adresse..

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 335
    Par défaut
    je te donne un exemple d'utilisation

    si j'apuis sur un de mes boutons sa me donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Sub SaveFiles()
    'sauvegarde le .xls dans sauvegarde
    Dim cmp, NomFich
    Adresse = ThisWorkbook.Path
    NomFich = Application.Caller
    DateInverse = Split(Date, "/")
    DateInverse = DateInverse(2) & "_" & DateInverse(1) & "_" & DateInverse(0) & "_"
        FileCopy Adresse & "\" & NomFich & ".xls", Adresse & "\" & "sauvegarde\" & _
        NomFich & DateInverse & Replace(Str(Time), ":", "-") & ".xls"
        Workbooks.Open Filename:=Adresse & "\" & NomFich & ".xls"
     
    End Sub

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    ce qui m'interpelle :
    mais quand je change mon code de repertoire
    c'est quoi "mon code" ?

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut Re: [VBA-E]thisworkbook.path
    tu aurai pu nous montrer le code concerné par :
    Citation Envoyé par ogenki
    je m'explique...le but est de recuperé le nom de tout les .xls d'un repertoire... mais quand je change mon code de repertoire...il me renvoi les .xls du premier repertoire dans lequel je l'ai mis...

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 335
    Par défaut
    c'est du VBA dans un . xls
    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
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    Private Sub Workbook_Open()
        Dim butTop, butLeft, Bouton, butHeight, butWidth, Adresse
        Dim k
        Dim lastline, winindex
        Dim ligne
        Dim Name
        Dim XlsFiles() As String
        Dim DocFiles() As String
        lastline = 1
        ligne = 0
       Application.DisplayAlerts = False
       adress = ThisWorkbook.Path
        'MkDir "C:\Documents and Settings\avaysse\Mes documents\sauvegarde"
        XlsFiles = FindFiles(Adresse, "xls")
        DocFiles = FindFiles(Adresse, "doc")
        For i = LBound(XlsFiles) To UBound(XlsFiles)
            If XlsFiles(i) = "test2.xls" Then GoTo sortie
            Workbooks.Open Filename:= _
                Adresse & XlsFiles(i)
                Range("A1:N6").Select 'selection des cellules a copier
                Selection.Copy ' copie des cellules
                Workbooks("test2.xls").Worksheets(1).Cells(lastline, 1).PasteSpecial Paste:=xlFormats 'copie des format
                Workbooks("test2.xls").Worksheets(1).Cells(lastline, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
                Workbooks(("test2.xls")).Activate
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ''''affichage des %
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                Range("h" & lastline + 5).Select
                Selection.Font.ColorIndex = 1
                Range("i" & lastline + 5).Select
                Selection.Font.ColorIndex = 1
                Range("j" & lastline + 5).Select
                Selection.Font.ColorIndex = 1
                Range("k" & lastline + 5).Select
                Selection.Font.ColorIndex = 1
                Range("l" & lastline + 5).Select
                Selection.Font.ColorIndex = 1
                Range("m" & lastline + 5).Select
                Selection.Font.ColorIndex = 1
                Selection.FormatConditions.Delete
                Range("n" & lastline + 5).Select
                Selection.Font.ColorIndex = 1
                Selection.FormatConditions.Delete
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''' creation des liens vers les classeurs source
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                '''''''''''''''''''''''''''''''''''
                ''''     position du bouton    ''''
                '''''''''''''''''''''''''''''''''''
                butTop = Range("g" & lastline + 7).Top
                butLeft = Range("g" & lastline + 7).Left
                butHeight = Range("g" & lastline + 7).Height
                butWidth = Range("g" & lastline + 7).Width
                '''''''''''''''''''''''''''''''''''
                ''''       code du bouton      ''''
                '''''''''''''''''''''''''''''''''''
                Set Bouton = ActiveSheet.Buttons.Add(Left:=butLeft, Top:=butTop, Width:=butWidth, Height _
                :=butHeight * 2)
                With Bouton
                    .OnAction = "Openfiles"
                    Name = Split(XlsFiles(i), ".")
                    .Name = Name(0)
                    .Caption = "consulter"
                End With
     
     
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''' creation des liens vers les documents word
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                '''''''''''''''''''''''''''''''''''
                ''''     position du bouton    ''''
                '''''''''''''''''''''''''''''''''''
                butTop = Range("i" & lastline + 7).Top
                butLeft = Range("i" & lastline + 7).Left
                butHeight = Range("i" & lastline + 7).Height
                butWidth = Range("i" & lastline + 7).Width
                '''''''''''''''''''''''''''''''''''
                ''''       code du bouton      ''''
                '''''''''''''''''''''''''''''''''''
                Set Bouton = ActiveSheet.Buttons.Add(Left:=butLeft, Top:=butTop, Width:=butWidth, Height _
                :=butHeight * 2)
                With Bouton
                    .OnAction = "OpenWorddocs"
                     Name = Split(XlsFiles(i), ".")
                     Name = Replace(Name(0), " ", "")
                    .Name = Name
                    Name = Split(XlsFiles(i), ".")
                    .Caption = "fiche projet"
                End With
     
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ''''sauvegarde des documents excel
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                '''''''''''''''''''''''''''''''''''
                ''''     position du bouton    ''''
                '''''''''''''''''''''''''''''''''''
                butTop = Range("k" & lastline + 7).Top
                butLeft = Range("k" & lastline + 7).Left
                butHeight = Range("k" & lastline + 7).Height
                butWidth = Range("k" & lastline + 7).Width
                '''''''''''''''''''''''''''''''''''
                ''''       code du bouton      ''''
                '''''''''''''''''''''''''''''''''''
                Set Bouton = ActiveSheet.Buttons.Add(Left:=butLeft, Top:=butTop, Width:=butWidth, Height _
                :=butHeight * 2)
                With Bouton
                    .OnAction = "SaveFiles"
                    .Name = Name(0)
                    .Caption = "sauve et ouvre"
                End With
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''' fermeture de toute les fenetres et vidé le clipboard
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                Application.DisplayAlerts = False
                Workbooks(XlsFiles(i)).Close False
                OpenClipboard 0
                EmptyClipboard
                CloseClipboard
                Application.DisplayAlerts = True
                lastline = lastline + 10
     
    sortie:
    Next
    Application.DisplayAlerts = True
    End Sub
    et le module

    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
    Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
    Public Declare Function EmptyClipboard Lib "user32" () As Long
    Public Declare Function CloseClipboard Lib "user32" () As Long
    Dim FicDoc
    Dim DocFiles
    Dim XlsFiles
    Dim Adresse
     
     
    Public Sub OpenWorddocs()
    Adresse = ThisWorkbook.Path
    'necesite d'activer la reference Microsoft Word xx.x Object Library
        Dim DocPath As String
        Dim appWrd As Word.Application
        Dim DocWord As Word.Document
        Nom = Application.Caller
        Set appWrd = New Word.Application
        DocPath = Adresse & "\" & Nom & ".doc"
        If Dir(DocPath) <> "" Then
            Set DocWord = appWrd.Documents.Open(DocPath)
        Else
            Set docWrd = appWrd.Documents.Add
            docWrd.SaveAs DocPath
        End If
        appWrd.Visible = True
     
    End Sub
     
        Public Function FindFiles(ByVal Repertoire As String, ByVal Extension As String) As String()
    ' recherche tout les document du repertoire avec l'extention voulu
        Dim test As String, cmpt As Integer, tabTemp() As String
        test = Dir(Repertoire & "*." & Extension)
     
     
        While test <> ""
            ReDim Preserve tabTemp(cmpt)
                tabTemp(cmpt) = test
                cmpt = cmpt + 1
                test = Dir
        Wend
        FindFiles = tabTemp
     
     
    End Function
     
    Public Function Openfiles()
    Dim FileToOpen
    Adresse = ThisWorkbook.Path
    FileToOpen = Application.Caller
     
    Workbooks.Open Adresse & "\" & FileToOpen & ".xls", , True
    End Function
     
    Public Sub SaveFiles()
    'sauvegarde le .xls dans sauvegarde
    Dim cmp, NomFich
    Adresse = ThisWorkbook.Path
    NomFich = Application.Caller
    DateInverse = Split(Date, "/")
    DateInverse = DateInverse(2) & "_" & DateInverse(1) & "_" & DateInverse(0) & "_"
        FileCopy Adresse & "\" & NomFich & ".xls", Adresse & "\" & "sauvegarde\" & _
        NomFich & DateInverse & Replace(Str(Time), ":", "-") & ".xls"
        Workbooks.Open Filename:=Adresse & "\" & NomFich & ".xls"
     
    End Sub

    voila c'est sa mon code...

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     adress = ThisWorkbook.Path
    manquerai pas une lettre !! rajoute option explicit en haut de ton module pour éviter ces erreurs !

  8. #8
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 335
    Par défaut
    comment je le rajoute ? quelle sintaxe ?

    apres modification de "adresse" le probleme perciste

  9. #9
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    à placer en haut de ton module .. cela oblige la déclaration des variables... et permet de détecter plus facilement les erreurs de frappes sur la saisie de leur nom...

    Sinon avec Adresse , ton code fonctionne-t'il mieux ?

  10. #10
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 335
    Par défaut
    non sa va pas mieu...etonant...

  11. #11
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Alors : que change-tu de répertoire ? ton code ou un document .xls ?
    (juste pour rester tout-à-fait clair)

  12. #12
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 335
    Par défaut
    les 2 enfait...vu que mon code est dans mon .xls

    je fait un couper/coller...vers une nouvelle adresse..( nimporte ou enfait.. exemple je passe de

    C:\Documents and Settings\avaysse

    a

    C:\Documents and Settings\avaysse\Mes documents


    mais sa recupere quand-meme les .xls de la premiere adresse

  13. #13
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    hem !....

  14. #14
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 335
    Par défaut
    hem !....
    pas tres explicite tout sa...j'ai pas dit que j'etait un pro du VBA..

    [EDIT] le seul moyen serais de faire des copier coller de mon code dans un nouveau .xls ?

    ill n'y a pas moyen de reinitialisé adresse ?

  15. #15
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ? est-tu sur de ce que tu avance .? vérifie la valeur de ton thisworkook.path... rajoute par exempler des
    ou ... mode pas à pas...

  16. #16
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    et si le code est mis dans un xla ... dans un répertoire différent du xls ?
    (je n'ai plus Excel "moderne"...mais ma seule mémoire...)

  17. #17
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 335
    Par défaut
    j'ai mis des Msgbox adresse partout...et se que je comprend c'est qu'il reconais bien mon nouveau chemin..mais qu'il recupere quand meme les ancien fichier ( si vous avez compris mon code vous avez vu que un des bouton crée un .doc dans le meme repertoire... bin il l'a bien crée dans le nouveau chemin..comprend pas...)

    aprés avoir regardé ou sa pouvais reelement planté..j'ai regardé dans la fonction qui recherche tout les .xls...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function FindFiles
    en me disant qu'il recherche dans le mauvais repertoire.. je fait donc un MsgBox repertoire... et il me renvoi bien le nouveau repertoire.. comprend plus rien moi..

    si quelqun a une idée.. merci

  18. #18
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    ThisWorkbook.Path te renverra toujours le chemin du classeur dans lequel se trouve le code exécuté en ce moment.

    Jamais le chemin d'un classeur sur lequel tu interviens.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  19. #19
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 335
    Par défaut
    bin oui...mais non... sa marche pas...

    il me renvoi bien la position du classeur.. mais il ne fait pas la recherche dans le repertoire... je comprend rien..

  20. #20
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    et encore une fois tu est sur de ton analyse ... et que Findfiles..ne te renvoi pas la bonne liste de fichiers... pour cela .. place une point d'arrêt (F9) aprés la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XlsFiles = FindFiles(adresse, "xls")
    et exaline le contenu du tableau xlsFiles dans la fenêtre Espion ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Monter dans l'arborescence d'un chemin relatif avec ThisWorkBook.Path
    Par LimsWolf dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/08/2012, 13h41
  2. [Excel-VBA]Nom d'un workbook a partir de son path
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 19/10/2006, 15h34
  3. VBA CurrentProject.Path probleme
    Par csensoli dans le forum Access
    Réponses: 2
    Dernier message: 20/07/2006, 17h25
  4. [VBA-E] Image sans path
    Par skual dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/03/2006, 15h36
  5. [VBA Excel] Comment écrire un code dans le ThisWorkBook ?
    Par WebPac dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/05/2005, 15h03

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