Nom classeur variable

stephane.quinquis

XLDnaute Junior
Bonjour le Forum,

J'ai deux classeurs: enregistrement pertes et inventaire production exemple.

Je souhaite exporter des données de l'enregistrement pertes vers inventaire production.

J'ai une seule question: mon classeur enregistrement pertes aura toujours un nom différent et je ne sais pas lequel car il va changer suivant des ordres de fabrication.

Je voulais savoir comment était possible d'en tenir compte dans ma macro suivante sachant que l'inventaire production exemple lui gardera toujours le meme nom de classeur

Code:
Sub testvalidation()
'
' testvalidation Macro
' Macro enregistrée le 12/05/2010 par quinquis
Windows("inventaire production exemple.xls").Activate
    Rows("7:7").Select
    Selection.Insert Shift:=xlDown
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    Selection.Interior.ColorIndex = 2
    Selection.Font.ColorIndex = 0
    ActiveWindow.SmallScroll ToRight:=-4
    Range("G7:EL7").Select
    With Selection.Interior
        .ColorIndex = 15
        .Pattern = xlSolid
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    End With
    [B]Windows("enregistrement pertes.xls").Activate[/B]
    Range("B7").Select
    Selection.Copy
   Windows("inventaire production exemple.xls").Activate
    Range("A7").Select
    ActiveSheet.Paste
    [B]Windows("enregistrement pertes.xls").Activate[/B]
    Range("C7").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("inventaire production exemple.xls").Activate
    Range("B7").Select
    ActiveSheet.Paste
    [B]Windows("enregistrement pertes.xls").Activate[/B]
    Range("D7").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("inventaire production exemple.xls").Activate
    Range("C7").Select
    ActiveSheet.Paste
    [B]Windows("enregistrement pertes.xls").Activate[/B]
    Range("E7").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("inventaire production exemple.xls").Activate
    Range("D7").Select
    ActiveSheet.Paste
    [B]Windows("enregistrement pertes.xls").Activate[/B]
    Range("F7").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("inventaire production exemple.xls").Activate
    Range("E7").Select
    ActiveSheet.Paste
    [B]Windows("enregistrement pertes.xls").Activate[/B]
    Range("G7").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("inventaire production exemple.xls").Activate
    Range("F7").Select
    ActiveSheet.Paste
    ActiveWorkbook.Save
    ActiveWindow.Close
    ActiveWindow.SmallScroll ToRight:=-7
    Range("B7:G7").Select
    Selection.Interior.ColorIndex = 6
End Sub

Je vous joint deux classeurs exemples.

Merci

enregistrement pertes
Cijoint.fr - Service gratuit de dépôt de fichiers
 

Pièces jointes

  • inventaire production exemple.xls
    27 KB · Affichages: 52
  • inventaire production exemple.xls
    27 KB · Affichages: 58
  • inventaire production exemple.xls
    27 KB · Affichages: 52

stephane.quinquis

XLDnaute Junior
Re : Nom classeur variable

Bonjour bouba

non ces fichiers ne sont pas dans le meme repertoire.
Sinon pour la procédure d'enregistrement je m'explique.
L'utilisateur part d'un fichier vierge nommé "enregistrement pertes vierge" par exemple.
L'utilisateur rentre un numéro d'ordre de fabrication dans une cellule sur une autre feuille de ce meme classeur "enregistrement pertes vierge" et appuie sur un bouton macro enregistrer fichier.
La macro provoque l'enregistrement de mon fichier dans un autre répertoire avec pour nom de fichier le numéro d'ordre de fabrication inscrit par l'utilisateur.
C ce nom qui doit apparaitre dans ma macro mais il est impossible pour moi de le connaitre a l'avance, c une variable.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Nom classeur variable

Bonjour le fil, bonjour le forum,

Si ta macro est enregistrée dans le classeur enregistrement pertes.xls (enfin celui auquel il correpond), tu pourrais utiliser ce boute de code :
Code:
Dim co As Workbook 'déclare la variable co (Classeur Origine)
Set co = ThisWorkbook 'définit le classeur Origine
Sinon je te propose la macro ci-dessous mais qui ne fonctionne que si seulement ces deux fichiers sont ouvert et aucun autre (sauf PERSO.xls)... :
Code:
Sub Macro1()
Dim cl As Workbook 'déclare la variable cl (CLasseur)
Dim co As Workbook 'déclare la variable co (Classeur Origine)
 
For Each cl In Workbooks 'boucle sur tous les classeurs ouverts
    'si le nom du classseur est "inventaire production exemple.xls"
    'ou si le nom est "PERSO.xls", passe au classeur suivant
  If cl.Name = "inventaire production exemple.xls" _
        Or cl.Name = "PERSO.XLS" Then
        GoTo suite 'va à l'étiquette "suite"
    End If
    Set co = cl 'définit la Classeur Origine
suite:
Next cl 'prochain classeur de la boucle
 
'ton code...
End Sub
Il te suffit ensuite de remplacer dans ton code :
Code:
Windows("enregistrement pertes.xls").Activate
par :
Code:
co.Activate
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 218
Messages
2 086 359
Membres
103 197
dernier inscrit
sandrine.lacaussade@orang