save mauvais classeur

  • Initiateur de la discussion Initiateur de la discussion Jean Michel CROQUETTES
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

Jean Michel CROQUETTES

Guest
Bonjour,

Mon save sauvegarde le mauvais classeur (celui contenant la macro donc Thisworkbook) et non l'activeworkbook que je tente d'activer de nombreuses fois mais qui le refuse apparement.
Je ne comprends pas. C'est surement une histoire de fin de boucle.

Voilà la fin du code:
Workbooks.Open strNomFic
Workbooks(strNomFic).Activate
' Récupérer la dernière ligne en colonne A
lgDerLig = ActiveWorkbook.Sheets("Commandes Rapprochées d'HA+").Range("A" & Cells.Rows.Count).End(xlUp).Row
' Copier les colonnes A => AX dans le classeur
Workbooks(WB).Sheets("Commandes Rapprochées d'HA+").Range("A" & lgLig & ":AX" & lgLig).Copy
ActiveWorkbook.Sheets("Commandes Rapprochées d'HA+").Range("A" & lgDerLig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Workbooks(strNomFic).Activate
End If
Workbooks(strNomFic).Activate
End With
Workbooks(strNomFic).Activate
Next lgLig
' Fermer le classeur
Workbooks(strNomFic).Activate
ActiveWorkbook.Save
ActiveWorkbook.Close

L'activeworkbook sauvé et fermé n'est pas strNomFic (la variable contient la bonne valeur)

Merci à tous et bonne journée,

Jean Michel CROQUET
 
Re : save mauvais classeur

Salut,

A la fin, essaye plutot ceci :
Code:
Workbooks(strNomFic).Save
Workbooks(strNomFic).Close
[COLOR=green]'a la place de :[/COLOR]
Workbooks(strNomFic).Activate
ActiveWorkbook.Save
ActiveWorkbook.Close

Autre remarque : Je pense que les 3 Workbooks(strNomFic).Activate qui se trouvent juste au dessus ne sont pas nécessaire...
 
Re : save mauvais classeur

Tout à fait, c'est la première chose que j'ai fait mais il ne se passe rien. Il ne plante pas non plus.
De plus, il ne fait rien alors que la variable a la bonne valeur.

C'est pour cela que je n'y comprend plus rien!
Est-ce car strnomfic est déterminé dans une boucle fermée précédement par un endif?

Merci,

JMC
 
Re : save mauvais classeur

J'ai enfin compris!!!
C'est une fonction qui doit poser probleme.
Cette fonction teste l'ouverture du classeur. Lorsque qu'elle renvoit faux alors ouverture du classeur et tout se passe bien.
En revanche, si elle renvoit vrai alors il faut juste utiliser le classeur ouvert et ça c'est impossible. C'est comme si il n'existait plus. Y aurait il un unlock à ajouter quelque part?
Aurais tu une idée mon cher Romain?

Voici le code de la fonction :
Function VerifOuvertureClasseur(strNomFic) As Boolean
Dim x As Integer

On Error Resume Next
x = FreeFile()

Open strNomFic For Input Lock Read As #x
Close x

If Err.Number = 0 Then VerifOuvertureClasseur = False
If Err.Number = 70 Then VerifOuvertureClasseur = True

On Error GoTo 0
End Function

Merci encore,

JM
 
Re : save mauvais classeur

Salut,

Je ne sais toujours pas quoi te dire puisque pour ma part, la fonction ne marche pas, elle me revoit toujours false !!!!
Peut etre qu'un exemple serai le bienvenue si tu trouves vraiment pas la solution a ton problème...

@+
 
Re : save mauvais classeur

Merci beaucoup,

La fonction marche, je vais preparer un exemple simplifié de mon problème car c'est à devenir fou. ça fait 2 jours que je suis dessus!!!! Je vais craquer.

A très vite,
 
Re : save mauvais classeur

Voilà ma petite appli simplifiée.
Apres une première boucle l'activeworkbook n'est plus le même et il m'est impossible de le réactiver. D'où mon incompréhension!
Par exemple il faut que le fichier créé en 56 (morbihan!) contienne plus d'une ligne.

Merci beaucoup d'avance,

J'espere que vous y comprendrez quelque chose!

Jean Michel CROQUETTES
 

Pièces jointes

Re : save mauvais classeur

Merci à toi de prendre la peine de m'aider.
Dans l'exemple,
Ce qui devrait etre fait :
Création de 4 classeurs comprenant 1 ligne chacun sauf celui terminant par 56 comprenant 7 lignes.
Ce qui est réellement fait :
Création de 4 classeurs comprenant 1 ligne chacun.
Ajout des lignes supplementaires (56) dans le fichier source de la macro! (onglet voitures)

Si tu as une idée, rien qu'une piste car j'ai épuisé tout ce que j'ai en stock!

JMC
 
Re : save mauvais classeur

re,

Ok, bon ca a l'air de marcher comme ca :
Code:
Sub extraction()
 'Extraction des "voitures"
 
    Sheets("voitures").Activate
    Sheets("voitures").Select
    WB = ThisWorkbook.Name
    WP = ThisWorkbook.Path
    WS = ActiveSheet.Name
 
    Application.DisplayAlerts = False
 
    ' Boucle de la ligne 1 à la dernière en colonne B
    For lgLig = 2 To Range("B" & Cells.Rows.Count).End(xlUp).Row
        Workbooks(WB).Activate
        With Workbooks(WB).Worksheets(WS)
            ' Nom du fichier à traiter
            NumVoiture = Range("B" & lgLig).Value
            strNomFic = WP & "\" & NumVoiture & "_C015_Fichier_Enrichissement.xls"
            NomFic = NumVoiture & "_C015_Fichier_Enrichissement.xls"
            ' Si le fichier est trouvé, l'ouvrir sinon le créer
            If Dir(strNomFic) = "" Then
                ' Créer un classeur
                Workbooks.Add
                ' Importer les onglets modèles
                Workbooks(WB).Sheets("voitures (M)").Copy After:=ActiveWorkbook.Sheets(1)
                'Renomme onglet
                Workbooks(NomFic).Sheets("voitures (M)").Name = "voitures"
                'Supprimer les onglets
                Worksheets("Feuil1").Delete
                Worksheets("Feuil2").Delete
                Worksheets("Feuil3").Delete
                ' Copier les colonnes A et B dans le nouveau classeur
                Workbooks(WB).Sheets("voitures").Range("A" & lgLig & ":B" & lgLig).Copy
                Workbooks(NomFic).Sheets("voitures").Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                ' Sauvegarder le nouveau classeur
                Workbooks(NomFic).SaveAs strNomFic
            Else
                ' Ouvrir le classeur
                If VerifOuvertureClasseur(strNomFic) Then
                    ' Récupérer la dernière ligne en colonne A
                    lgDerLig = Workbooks(NomFic).Sheets("voitures").Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
                    ' Copier les colonnes A => B dans le classeur
                    Workbooks(WB).Sheets("voitures").Range("A" & lgLig & ":B" & lgLig).Copy
                    Workbooks(NomFic).Sheets("voitures").Range("A" & lgDerLig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                Else
                    Workbooks.Open strNomFic
                    ' Récupérer la dernière ligne en colonne A
                    lgDerLig = Workbooks(NomFic).Sheets("voitures").Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
                    ' Copier les colonnes A => AX dans le classeur
                    Workbooks(WB).Sheets("voitures").Range("A" & lgLig & ":B" & lgLig).Copy
                    Workbooks(NomFic).Sheets("voitures").Range("A" & lgDerLig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                End If
            End If
        End With
    Next lgLig
' Sauvegarder/Fermer le classeur
For Each w In Workbooks
    If w.Name <> ThisWorkbook.Name Then
        If InStr(w.Name, "voitures") > 0 Then
            w.Close savechanges:=True
        End If
    End If
Next w
End Sub

J'ai seulement virer tout les ActiveWorkbook que j'ai remplacer par des Workbooks(NomFic) apres avoir definis la variable NomFic en début de code

@+
 
Re : save mauvais classeur

Merci!

En fait j'avais testé mais en gardant strnomfic qui comprant le chemin => ça ne marche pas
et j'avais essayé en créant un nomfic mais en le déclarant as workbook => ça ne marche pas non plus!
C'était entre les 2...

Merci encore,

JeanMicheMiche
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
936
LeSaintKebab
L
Réponses
0
Affichages
747
R
  • Question Question
Réponses
2
Affichages
988
Rousseau Benoit
R
Retour