enregistrer et ouvrir un classeur sur différents ordinateurs

argonos

XLDnaute Nouveau
Bonjour à tous,

j'ai un soucis concernant ma macro et comme je ne m'y connaît pas encore en basic, je me tourne vers vous.

1/J'ai trois classeurs, le principal est ouvert et en exécutant ma macro, je voudrais qu'elle ouvre un second classeur (par exemple "classeur1.xls" et situé dans le même dossier) pour pouvoir ensuite continuer l'exécution de ma macro et que cela fonctionne sur n'importe quel ordinateur.

J'ai trouvé un bout de code mais je ne sais pas si cela correspond:
Code:
ActiveWorkbook.SaveAs activeworkbook.path & "\nom du dossier\" & nom

2/Toujours à partir de mon classeur principal, je créé un nouveau classeur, j'y colle mes données et je voudrais que le nom du fichier à enregistrer soit en fonction de la date (ex: aujourd'hui : 27/11/2008 et 1ere facture (dont le numéro est dans une case) => "FC-271108-1.xls") et que cela fonctionne sur n'importe quel ordinateur aussi.

Je vous remercie par avance !!
 

Staple1600

XLDnaute Barbatruc
Re : enregistrer et ouvrir un classeur sur différents ordinateurs

Bonsoir


Peut-on voir le contenu de ta macro, stp ?

EDITION
En attendant voici une macro qui ouvre le classeur1.xls
Code:
Sub ouvrir_classeur()
Dim Dossier$, FICHIER1$
Dossier = _
    ThisWorkbook.Path & Application.PathSeparator
FICHIER1 = _
    "Classeur1.xls"
Workbooks.Open (Dossier & FICHIER1)
End Sub
 
Dernière édition:

argonos

XLDnaute Nouveau
Re : enregistrer et ouvrir un classeur sur différents ordinateurs

Tiens, voici ma macro (le fichier que je veux ouvrir est déjà ouvert ici pour que l'enregistrement fonctionne):
Code:
Sub archivage_clients()
    Dim i As Long
    For i = 25 To 42
     If Cells(i, 6) = "Pas assez de pièces disponibles" Then
          MsgBox ("Vous ne pouvez pas effectuer cette action pour la cellule F, ligne " & i)
          Exit Sub
    End If
    Next i
    Sheets("Gestion des stocks").Select
    Range("C25:C42").Select
    Range("C42").Activate
    Selection.Copy
    Range("E3:E20").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
        :=False, Transpose:=False
    Range("B20").Select
    Application.CutCopyMode = False
    Sheets("Employés").Select
    Range("G12:G15").Select
    Selection.Copy
    Range("F12:F15").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
        :=False, Transpose:=False
    Range("B11").Select
    Application.CutCopyMode = False
    Sheets("Analyse Financière").Select
    Range("F6:F7").Select
    Selection.Copy
    Range("E6:E7").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
        :=False, Transpose:=False
    Range("G21:H24").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E21:E24").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("C3:F3").Select
    Sheets("Facture Client").Select
    Range("A1:K57").Select
    Selection.Copy
    Workbooks.Add
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Range("A1").Select
    Windows("Fichier de Gestion.xls").Activate
    ActiveSheet.Shapes("Picture 86").Select
    ActiveSheet.Shapes("Picture 19").Select
    ActiveSheet.Shapes.Range(Array("Picture 19", "Picture 2")).Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Classeur2").Activate
    ActiveSheet.Paste
    [COLOR="YellowGreen"]'Voilà ce que je veux enregistrer :[/COLOR]
[COLOR="Red"]    ChDir "C:\Users\XXX\Desktop\PROJET\Factures Clients"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\XXX\Desktop\PROJET\Factures Clients\Classeur2.xls"[/COLOR] _
        , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    ActiveWindow.Close
    [COLOR="YellowGreen"]'Ici ce que je veux ouvrir :[/COLOR]
[COLOR="Red"]    Windows("Archivages Clients.xls").Activate[/COLOR]
    Rows("7:7").Select
    Selection.Insert Shift:=xlDown
    Windows("Fichier de Gestion.xls").Activate
    Range("C9:D9").Select
    Selection.Copy
    Windows("Archivages Clients.xls").Activate
    Range("C7").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows("Fichier de Gestion.xls").Activate
    Range("C10:D10").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Archivages Clients.xls").Activate
    Range("D7").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows("Fichier de Gestion.xls").Activate
    Range("J9").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Archivages Clients.xls").Activate
    Range("E7").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Windows("Fichier de Gestion.xls").Activate
    Range("J11").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Archivages Clients.xls").Activate
    Range("F7").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows("Fichier de Gestion.xls").Activate
    Range("J49").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Archivages Clients.xls").Activate
    Range("G7").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveWorkbook.Save
    Windows("Fichier de Gestion.xls").Activate
    Range("J10") = Range("J10") + 1
    Range("C9") = ""
    Range("J11") = ""
    Range("B16:I16") = ""
    Range("B19:B42") = ""
    Range("D19:D42") = ""
    Range("D54:D56") = ""
    ActiveWorkbook.Save
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : enregistrer et ouvrir un classeur sur différents ordinateurs

Re



Peux tu en faisant ces modifs dans un premier temps

Ces lignes en verts peuvent être remplacées par le code en bleu

'Sheets("Gestion des stocks").Select
' Range("C25:C42").Select
' Range("C42").Activate
' Selection.Copy
' Range("E3:E20").Select
' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
' :=False, Transpose:=False
' Range("B20").Select
' Application.CutCopyMode = False


Sub test()
Sheets("Gestion des stocks").Range("C25:C42").Copy Range("E3:E20")
End Sub

Tu as compris la logique ?

Si oui effectue les remplacements nécessaires

Puis testes, stp.
 

argonos

XLDnaute Nouveau
Re : enregistrer et ouvrir un classeur sur différents ordinateurs

Oui, je comprends, c'est le soucis de l'enregistrement je fais ça et je te dis.

EDITION
Cela ne fonctionne pas malheureseusement. Il me copie les formules uniquement. Dans la plage (C25:C42) il y a des nombres qui résultent de formules et dans la plage (E3:E20), il y a des constantes que j'ai moi-même fixées.

Je dois logiquement avoir une addition des valeurs (anciennes constantes+valeurs résultantes de (C25:C42) ) à la place des constantes mais j'ai les formules (qui donnent donc des résultats incohérents)
 
Dernière édition:

jeanpierre

Nous a quitté
Repose en paix
Re : enregistrer et ouvrir un classeur sur différents ordinateurs

Bonjour argonos, JM,

Je viens de voir ton fichier. Je ne sais pas si les données sont fictives ou non, mais il y a des noms, adresses, téléphones et plus spécialement des numéro RIB.

Si ces données sont réelles, je te conseille de les modifier, ensuite de SUPPRIMER le lien dans ton message de 01h13 et de redéposer le nouveau fichier, ceci pour le bien de tout le monde.

En attendant, bonne journée.

Jean-Pierre
 

argonos

XLDnaute Nouveau
Re : enregistrer et ouvrir un classeur sur différents ordinateurs

C'est bon j'ai résolu le second problème !
Pour ceux qui sont dans le même cas, voici comment faire pour créer et enregistrer un nouveau classeur à partir d'un fichier déjà existant et ce sur n'importe quel ordianteur ou n'importe quel chemin d'accès différent de celui où a été créé la macro (par enregistrement).
Cela marche aussi pour le simple enregistrement d'un classeur qui sera amené à changer de dossier ou d'ordinateur (en adaptant un peu ce bout de code).

Code:
[COLOR="YellowGreen"]'Déclarer une variable en tant que chaîne de caractères[/COLOR]
    Dim chemin As String

[I]    ...morceau de code quelconque[/I]

[COLOR="YellowGreen"]'Lui assigner le chemin du classeur actif[/COLOR]
    chemin = ActiveWorkbook.Path

[I]    ...morceau de code quelconque[/I]

[COLOR="YellowGreen"]'Pour créer un nouveau classeur[/COLOR]
    Workbooks.Add

[B][I]rester sur le nouveau classeur [/I][/B]

[COLOR="YellowGreen"]'Sauvegarder dans le même dossier ou avec un sous-dossier[/COLOR]
    ActiveWorkbook.SaveAs Filename:= _
        chemin & "\<rajouter éventuellement un sous-dossier>\" & nomdevotrefichier & ".xls"

[I]    ...morceau de code quelconque[/I]
PS: si vous rencontrez une boîte de dialogue en cours d'exécution de macro vous demandant si vous voulez remplacer un fichier déjà existant et que tel est le cas, rajoutez en début de macro :
Code:
    Application.DisplayAlerts = False
et à la fin de la macro :
Code:
    Application.DisplayAlerts = True

Bonne chance !
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 075
Messages
2 085 078
Membres
102 772
dernier inscrit
bluetesteur