• Initiateur de la discussion Initiateur de la discussion moa131
  • 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 !

moa131

XLDnaute Nouveau
Bonjour,
je suis débutant en VBA, et j'ai commencé a faire une macro permettant de copier la ligne d'un classeur sur un autre si celles-ci sont différentes l'une de l'autre, cependant quand j'execute ma fonction j'ai une erreur 1004 la méthode close de l'objet workbook a échoué, pouvez vous m'aider svp ?


Voici le bout de code:

Code:
Dim Fic18 As String

Fic18 = "XX.xls"
Sh18 = "XX"

Workbooks.Open (Fic18)
If ActiveSheet.ProtectContents = True Then

    Workbooks(Fic18).Worksheets(Sh18).Unprotect Password:="xxxxxxx"

     etaitprotege = 1

End If

                            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

For Ligne = 3 To Max

     If Workbooks("Récapitulatif.xls").Worksheets("Feuil1").Range("K" & Ligne) = "S" Then

          Num = Workbooks("Récapitulatif.xls").Worksheets("Feuil1").Range("J" & Ligne).Value

          If Num > 0 And Not IsEmpty(Workbooks("Récapitulatif.xls").Worksheets("Feuil1").Range("J" & Ligne)) Then
                R = Num

          End If

                             ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Work = Workbooks(Fic18).Worksheets(Sh18).Range("G" & R)
            Depart = Workbooks("Récapitulatif.xls").Worksheets("Feuil1").Range("G" & Ligne)
            Tech2 = Workbooks(Fic18).Worksheets(Sh18).Range("I" & R)
            Tech1 = Workbooks("Récapitulatif.xls").Worksheets("Feuil1").Range("I" & Ligne)
            com1 = Workbooks("Récapitulatif.xls").Worksheets("Feuil1").Range("L" & Ligne)
            com2 = Workbooks(Fic18).Worksheets(Sh18).Range("L" & R)


                                ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            If Depart <> Work Then
                    Workbooks("Récapitulatif.xls").Worksheets("Feuil1").Range("G" & Ligne).Copy Workbooks(Fic18).Worksheets(Sh18).Range("G" & R)

                               
            End If

            If com1 <> com2 Then
                Workbooks("Récapitulatif.xls").Worksheets("Feuil1").Range("L" & Ligne).Copy Workbooks(Fic18).Worksheets(Sh18).Range("L" & R)
                           
            End If

            If Tech1 <> Tech2 Then
                Workbooks("Récapitulatif.xls").Worksheets("Feuil1").Range("I" & Ligne).Copy Workbooks(Fic18).Worksheets(Sh18).Range("I" & R)
                         

            End If

            If IsEmpty(Workbooks("Récapitulatif.xls").Worksheets("Feuil1").Range("K" & Ligne)) Then
                
                Exit For
            End If
        End If

Next Ligne
    
If etaitprotege = 1 Then

       Workbooks(Fic18).Worksheets(Sh18).Protect Password:="xxxxxxxx"
       etaitprotege = 0

End If
        
                Workbooks(Fic18).Activate
                Workbooks(Fic18).Save
                [COLOR="#FF0000"][B][I][U]Workbooks(Fic18).Close[/U][/I][/B][/COLOR]

le débugger me surligne celle que j'ai souligné/gras/italique/rouge


PS: je travail sous mac excel 2011, si je veux porter cette macro sur windows Excel 2010 y a t il des modifications à entreprendre ?
Vous en remerciant

moa131
 
Dernière édition:
Re : erreur 1004

Bonjour moa131 et bienvenue sur le forum
Pas très au courant de la syntaxe sur mac, mais essai ceci:
Workbooks(Fic18).Close False
En précisant si tu enregistre ou pas à la fermeture (comme tu le sauvegarde juste avant, inutile de recommencer.

Cordialement
 
Re : erreur 1004

Merci d'avoir répondu aussi rapidement, cependant votre solution ne fonctionne pas, je n'ai toujours pas compris pourquoi 🙁

Pour la syntaxe de ce que j'ai pu lire, elle est similaire à celle de windows, meme si des problèmes sont apparus lorsque j'ai essayé un bout de code tapper sur mac sur un windows :'(

PS: je précise aussi que cet macro s'active lorsque j'appuie sur un bouton dans mon useform, je pense que le probleme doit venir de la car dans un Sub Before_Save() la macro fonctionne parfaitement (je l'ai enlevé du before save car j'ai un message d'erreur me disant que la procédure est trop longue, j'ai donc décidé de la scinder en deux executable sur le clic de deux boutons différents d'un useform
 
Dernière édition:
- 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

Discussions similaires

Réponses
8
Affichages
233
Réponses
4
Affichages
461
Réponses
2
Affichages
512
Retour