Enregistrer oui, mais sur un nom de disque différent

Bonjour à tous,

Des petits génies d'ici m'ont fait une macro qui fonctionne super bien merci à eux!

Elle fonctionne parfaitement sur mon ordinateur c'est ok, sauf que sur celui de mon collègue non.

Pourquoi? car il n'est pas sur le même nom de disque que moi.

Lui est en Z:\ et moi en Y:\

Comment faire? avec un i= quelque chose? une sorte de recherche dans l'ordi?

Option Explicit
Sub enregistrer()
Dim nomf As String
Application.DisplayAlerts = False
On Error GoTo erreur

    nomf = "Y:\ASSISTANT QUALITE\Calcul des Indicateurs\OTD clients mensuel\" & Range("E15").Value & "_" & Range("E19").Value & ".xlsx"
    ActiveSheet.Copy
        ActiveWorkbook.SaveAs Filename:=nomf, FileFormat:=xlOpenXMLWorkbook

Exit Sub

erreur:

    MsgBox "Erreur : " & Err.Number & vbLf & Err.Description

End Sub

Merci d'avance, la sa dépasse mon petit niveau d'excel ^^

UP?

Bonjour,

Voici une p'tite fonction pour trouver la lettre du premier lecteur contenant un dossier quelconque (ici "ASSISTANT QUALITE")

Sub test()
Dim nomf As String

    nomf = Lettre_Lecteur_De("ASSISTANT QUALITE") & _
        ":\ASSISTANT QUALITE\Calcul des Indicateurs\OTD clients mensuel\" & Range("E15").Value & "_" & Range("E19").Value & ".xlsx"

    MsgBox nomf
End Sub

Function Lettre_Lecteur_De(Repertoire As String) As String
Dim FSO As Object, Drv As Object

    Lettre_Lecteur_De = "C"
    Set FSO = CreateObject("Scripting.FileSystemObject")

    For Each Drv In FSO.Drives
        If Drv.IsReady Then
            If ExisteRep(Drv.DriveLetter & ":\" & Repertoire) Then
                Lettre_Lecteur_De = Drv.DriveLetter
            End If
        End If
    Next
    Set FSO = Nothing
    Set Drv = Nothing
End Function

Function ExisteRep(NTtk As String) As Boolean
    On Error Resume Next
    ExisteRep = GetAttr(NTtk) And vbDirectory
End Function

Bonjour,

est ce que le chemin sur les 2 pc est identique?

\ASSISTANT QUALITE\Calcul des Indicateurs\OTD clients mensuel\

Si Oui

nomf = ThisWorkbook.path & "\" & Range("E15").Value & "_" & Range("E19").Value & ".xlsx"

Bonjour à vous 2,

Merci de vos réponses

pierrep56, Je vais regarder ta macro et essayer de la comprendre^^

M12, oui c'est le même chemin pour les 2, du coup comment il fait pour l'enregistrer? tu as pas mis le chemin non?

On peut limiter la recherche aux lecteurs réseau avec le code

Sub test()
Dim nomf As String

    nomf = Lettre_Lecteur_De("ASSISTANT QUALITE") & _
        ":\ASSISTANT QUALITE\Calcul des Indicateurs\OTD clients mensuel\" & Range("E15").Value & "_" & Range("E19").Value & ".xlsx"

    MsgBox nomf
End Sub

Function Lettre_Lecteur_De(Repertoire As String) As String
Dim FSO As Object, Drv As Object

    Lettre_Lecteur_De = "C"
    Set FSO = CreateObject("Scripting.FileSystemObject")

    For Each Drv In FSO.Drives
        If Drv.IsReady And Drv.DriveType = 3 Then
            If ExisteRep(Drv.DriveLetter & ":\" & Repertoire) Then
                Lettre_Lecteur_De = Drv.DriveLetter
            End If
        End If
    Next
    Set FSO = Nothing
    Set Drv = Nothing
End Function

Function ExisteRep(NTtk As String) As Boolean
    On Error Resume Next
    ExisteRep = GetAttr(NTtk) And vbDirectory
End Function

@ M12 : ta solution est pertinente si le fichier Excel de départ est également sur le même disque réseau

Pierre56, message d’erreur lorsque j'exécute ta première solution :

test marche po

Re,

Tu as 2 EndFunction en bas de page

Dans le code que tu mets en image, à la fin il y a 2 fois End Function (une fois de trop)

Mais encore une fois si le fichier de départ est sur le même lecteur réseau, la proposition de M12 est plus mieux!

Pierre

Edit : et en plus M12 est plus rapide à répondre!!

J'ai vu Merci ^^

D'accord, je vais prendre celui de M12, mais je en comprend pas comment il va m'enregistrer ma feuille et pas le classeur à l'endroit qui était indiqué

Re,

Simple

donne moi le chemin de ton classeur de travail, et celui du classeur de ton autre PC

Mon classeur de travail :

C:\Users\stage\Desktop\Calcul OTD ms query

(Mon fichier ira sur le réseau plus tard quand il sera au point)

La ou je l'enregistre avec ma macro actuellement :

Y:\ASSISTANT QUALITE\Calcul des Indicateurs\OTD clients mensuel

Sauf que mon collègue lui est en Z:\

désolé je suis un peu perdu la

Dans ce cas (fichier de départ sur lecteur différent de celui de l'enregistrement) mon code est plus pertinent.

Je me suis mal exprimé du coup Sorry!

Du coup quand j'utilise ton code pierrep56 sa me donne çà :

Je clique et sa fait rien ... aucun enregistrement

capture otd

Re,

Mon fichier ira sur le réseau plus tard quand il sera au point

si ton fichier se trouve sur

Y:\ASSISTANT QUALITE\Calcul des Indicateurs\OTD clients mensuel\Classeur.xlsx

ThisWorkbook.path te donnera

Y:\ASSISTANT QUALITE\Calcul des Indicateurs\OTD clients mensuel

l'autre PC

Z:\ASSISTANT QUALITE\Calcul des Indicateurs\OTD clients mensuel\Classeur.xlsx

ThisWorkbook.path te donnera

Z:\ASSISTANT QUALITE\Calcul des Indicateurs\OTD clients mensuel

Je me suis mal exprimé du coup Sorry!

Du coup quand j'utilise ton code pierrep56 sa me donne çà :

Je clique et sa fait rien ... aucun enregistrement

!!

Mon code n'est qu'un test pour afficher le chemin complet, il est nécessaire d’intégrer la ligne de code suivant dans ton code initial, à la place de celle existante

nomf = Lettre_Lecteur_De("ASSISTANT QUALITE") & _ ":\ASSISTANT QUALITE\Calcul des Indicateurs\OTD clients mensuel\" & Range("E15").Value & "_" & Range("E19").Value & ".xlsx"

C'est officiel je suis perdu!

Je reprend :

Mon classeur se trouve pour le moment sur mon bureau, il ira plus tard dans le réseau. (je vais directement le mettre sur le réseau je crois sa simplifiera les choses)

J'enregistre mes fiches avec ma macro sur le réseau à un endroit donné.

Mon disque a pour nom Y: et celui de mon collègue ou celui d'un autre Z:

Le problème est que si je met mon classeur sur le réseau, mon collègue ne pourra pas l'utiliser car dans ma macro tout est codé en Y:, du coup comment faire?

Je ne comprend plus rien a ce que je dois mettre dans ma macro pour enregistrer.

Désolé je suis un peu bête :/

Don't panic, on est tous passé par là.

le code complet :

Sub enregistrer()
Dim nomf As String
    Application.DisplayAlerts = False
    On Error GoTo erreur

    nomf = Lettre_Lecteur_De("ASSISTANT QUALITE") & _
        ":\ASSISTANT QUALITE\Calcul des Indicateurs\OTD clients mensuel\" & Range("E15").Value & "_" & Range("E19").Value & ".xlsx"

    ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:=nomf, FileFormat:=xlOpenXMLWorkbook
    Exit Sub

erreur:
    MsgBox "Erreur : " & Err.Number & vbLf & Err.Description
End Sub

Function Lettre_Lecteur_De(Repertoire As String) As String
Dim FSO As Object, Drv As Object

    Lettre_Lecteur_De = "C"
    Set FSO = CreateObject("Scripting.FileSystemObject")

    For Each Drv In FSO.Drives
        If Drv.IsReady And Drv.DriveType = 3 Then
            If ExisteRep(Drv.DriveLetter & ":\" & Repertoire) Then
                Lettre_Lecteur_De = Drv.DriveLetter
            End If
        End If
    Next
    Set FSO = Nothing
    Set Drv = Nothing
End Function

Function ExisteRep(NTtk As String) As Boolean
    On Error Resume Next
    ExisteRep = GetAttr(NTtk) And vbDirectory
End Function

Re,

Pour illustrer

Sub test()
  Dim Repertoire As String
  Repertoire = ThisWorkbook.Path
  MsgBox Repertoire

End Sub

place ce bout de code dans un module et lance le

tu auras le chemin de travail

et suivant s'il se trouve en C -D - Y ou Z

Merci de votre aide et de votre temps sincèrement !

Je crois que je reviendrai vous emmerder après, j'aurai d'autre problème à mon avis

Alors:

Pierrep56, je viens d'essayer tout ton code sa fonctionne sur mon PC et le sien c'est parfait !!!

M12, je vais essayer ton petit code la je te dis sa de suite !

Rechercher des sujets similaires à "enregistrer nom disque different"