Utilisation de WINDOWS.activate

Fermé
BING01 Messages postés 3 Date d'inscription mercredi 4 mars 2015 Statut Membre Dernière intervention 6 mars 2015 - 4 mars 2015 à 01:16
 BING02 - 12 mars 2015 à 21:07
Bonjour à tous.

Je suis un petit nouveau sur le forum et un grand débutant en VBA. Je cherche depuis des heures sur le forum des solutions à mes problèmes (un très grand merci à tous au passage !!!!!) et en général je trouve mon bonheur mais là je suis bloqué. Voici mon problème.

J'ai fait une macro qui créé un fichier Copie dans lequel est insérée une copie de la Feuille1 de mon classeur Source puis enregistre ce fichier Copie dans un répertoire "X" que je choisi, sans formules, sans macro et sans boutons de commandes (que certains objets). A l'issue de cette procédure, toujours dans la même macro, j'accompli une opération de vidage de données dans certaines cases. Jusque là pas de problème. Mais je ne suis pas parvenu à intégrer à la fin de cette macro des instructions pour :
- ré-enregistrer une nouvelle fois le fichier Copie puisque entre sa création et cet instant il a été modifié (suppression des données de certaines cases),
- puis de fermer enfin ce fichier Copie pour retourner dans le fichier Source.
Le nom du fichier Copie est indiqué dans la case A1 du fichier Source et varie donc au gré des enregistrements de copies.

J'ai imaginé de créer une macro séparée pour effectuer ces deux dernières instructions puis de combiner les 2 macros par la suite. Auriez-vous quelques minutes pour m'aider pour la 2ème macro, voir me dire si vous avez une idée pour inclure les instructions dans la première. La difficulté pour moi est d'indiquer le chemin du fichier qui varie dans l'expression Windows(....).Activate

Voici mon code complet :

de la 1ère Macro (qui fonctionne) :

________________________________________________________________________________

Sub Copier_enregistrer_ACTIONS()
Application.EnableEvents = False
ThisWorkbook.Worksheets("PROPOSITION").Copy
With ActiveWorkboock

'suppression des boutons de commande : ne supprime que les boutons de commande pas les photos
For Each s In ActiveSheet.Shapes
'Bouton "Changer de véhicule"
If s.TopLeftCell.Address = "$H$12" Then
s.Delete
End If
Next s
'Forme BLANCHE masquant "caractéristiques techniques" sous les boutons
For Each s In ActiveSheet.Shapes
If s.TopLeftCell.Address = "$I$12" Then
s.Delete
End If
Next s
'Boutons "Enregistrer DEVIS", "IMPRIMER", "Enregistrer PDF"
For Each s In ActiveSheet.Shapes
If s.TopLeftCell.Address = "$L$12" Then
s.Delete
End If
Next s
For Each s In ActiveSheet.Shapes
' Boutons "Nouveau DEVIS", "MAIL A PIERRE", "QUITTER"
If s.TopLeftCell.Address = "$N$12" Then
s.Delete
End If
Next s
For Each s In ActiveSheet.Shapes
' Bouton "NV"
If s.TopLeftCell.Address = "$R$8" Then
s.Delete
End If
Next s

'suppression des macros
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With

'Suppression des formules
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Cells(1, 1).Select


'definition du nom du fichier
NomDeSauvegarde = ActiveWorkbook.Sheets("ACTIONS").Range("A1").Text

NomSauve = ActiveWorkbook.Application.GetSaveAsFilename(InitialFileName:=NomDeSauvegarde, _
FileFilter:="Excel Files (*.xls), *xls")
If NomSauve = False Then Exit Sub

ActiveWorkbook.SaveAs NomSauve

End With

'efface les données contenues dans les cases "A1", "G3", ....
Sheets("ACTIONS").Range("A1,G3,H3,M3,N1,N3,N4,P7").ClearContents


Application.EnableEvents = True
Exit Sub

End Sub

__________________________________________________________________________________

de la 2ème Macro (qui n'est pas achevé et qui ne fonctionne pas !!)
__________________________________________________________________________________

Sub Macro1()
'
' Macro1 Macro
'

'definition du nom du fichier
NomDuFichier = ActiveWorkbook.Sheets("ACTIONS").Range("A1").Text

Windows(InitialFileName:=NomDuFichier, _
FileFilter:="Excel Files (*.xls), *xls").Activate
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
__________________________________________________________________________________

D'avance un énorme merci pour le temps que vous prendrez à m'aider.

BING01

7 réponses

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
4 mars 2015 à 08:56
Bonjour,

Ta procédure enregistre le classeur sous le nom contenu en Actions!A1.
Ensuite, elle efface les données contenues dans les cases "A1", "G3", ....

Si tu souhaites enregistrer le classeur après avoir effacé les cases "A1", "G3", etc. il suffit de changer l'ordre des opérations.
1) le nom de la copie est affecté à la variable NomDeSauvegarde
2) les cases "A1", "G3", ... sont effacées
3) le classeur est enregistré sous le nom correspondant à NomDeSauvegarde.

'On affecte le nom du fichier à une variable
NomDeSauvegarde = ActiveWorkbook.Sheets("ACTIONS").Range("A1").Text

'On efface les données contenues dans les cases "A1", "G3", ....
Sheets("ACTIONS").Range("A1,G3,H3,M3,N1,N3,N4,P7").ClearContents

'On enregistre
NomSauve = ActiveWorkbook.Application.GetSaveAsFilename(InitialFileName:=NomDeSauvegarde, _
FileFilter:="Excel Files (*.xls), *xls")
If NomSauve = False Then Exit Sub
ActiveWorkbook.SaveAs NomSauve


A+
0