Enregistrer une feuille avec ses codes VBA

Bonsoir à tous,

J'ai besoin de votre aide pour terminer mon application, je n'ai trouvé aucune réponse sur les forums.

J'ai un classeur avec 3 feuilles, 2 userform, des boutons, checkbox et des mises en forme conditionnelles en VBA.

A chaque nouvelle création, je sauvegarde la feuille "formulaire (3)" dans un répertoire.

Lorsque j'ouvre la feuille, les codes que j'ai programmés (enregistrement des évênements et mise en forme conditionnelle) n'ont pas été sauvegardés. Il doit me manquer une instruction qui dise de sauvegarder également les codes?

Je vous joins une copie de mon fichier, vous comprendrez mieux que mes explications.

Merci pour votre temps

41sauvegarde.zip (59.92 Ko)

Bonjour,

Tu sauvegardes en copiant une feuille comme un classeur. Les codes liés à cette feuille sont donc sauvegardés. Mais il y a des codes qui sont liés au classeur (les 2 modules et les 2 formulaires ), par conséquent ils ne sont pas sauvegardés.

Bonjour et merci pour ta réponse.

Je suppose que ce que tu appelles les 2 formulaires, correspond à mes 2 userform?

Lorsque je sauvegarde ma feuille, Je n'ai plus besoin des codes qui sont liés au classeur (modules et userform) OK; mais j'ai besoin des codes que j'ai mis dans ma feuille 4 (formulaire (3)) et ils ne sont pas sauvegardés avec ma feuille.

Je ne comprends pas pourquoi ça ne marche pas.

Bonne fin de soirée, cdlt

Re,

Pourtant, quand j'ai testé, le code de la feuille 4 était là. Dis-moi comment tu constates que le code n'est pas dans ton nouveau classeur. Ou bien envoi-nous le nouveau fichier que tu enregistres. Je jetterai un coup d'œil.

Bonsoir,

Je te joins le fichier que j'ai enregistré.

Le code n'est pas dans mon classeur, je le vois parceque lorsque je remplis mes checkbos, il ne se passe rien et quand je vais dans le code de la feuille par le développeur, c'est vide

cdlt,

166.xlsx (48.59 Ko)

Re,

Un classeur qui contient du code (macro), dans la version 2010, a l'extension .xlsm et non pas .xlsx. Sinon, tu peux faire avec l'extension .xls qui pourra contenir la macro. C'est peut-être ça qui te pose du problème.

Re

L'extension se met d'elle même lorsque je sauvegarde, comment paramétrer Excel pour sauvegarder en .xls (extension qui me parait la mieux adaptée car compatible avec les versions antérieures à 2010 que nous utilisons sur certains Pc de l'entreprise).

Je n'ai pas trop de connaissances avec tout cela, j'apprends beaucoup avec les forums.

Merci,

Re,

Regarde les modifications suivantes qui sont surlignées :

  Application.DisplayAlerts = False
  With ActiveWorkbook
   '.Sheets(1).DrawingObjects.Delete
   .Sheets(1).CommandButton1.Visible = False
    .SaveAs Filename:=chemin & Fichier, FileFormat:=xlExcel8
    .Close
  End With
  Application.DisplayAlerts = True

Bonjour,

Ca marche très bien, Merci mille fois.

Je ne craignais pas de trouver la formule magique, je vais pouvoir l'appliquer ailleurs maintenant.

Sans vouloir abuser de ta gentillesse, j'aurais une amélioration à apporter à mon appli mais c'est pareil, je bloque sur le code.

Je voudrais enregistrer les évênements que sur certaines cellules et le code que j'ai est appliqué à toutes les cellules de ma feuille, j'ai essayé les with cells, if...sans succès.

Bonne après-midi

Bonjour,

Je ne comprends pas ta demande complémentaire. Reviens avec plus de précisions et le code à corriger.

Re-

Excuse moi, je m'exprime mal.

Chaque fois que j'interviens dans une cellule de la feuille 4 (formulaire 3), l'évênement est enregistré dans un commentaire, et ce pour toutes les cellules de la feuille. Je voudrais que cet enregistrement ne se fasse que dans certaines cellules (ex : B24, D16)

Le code est le suivant :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim OldComment As String, NewComment As String, objCell As Range

If Target.Cells.Count > 1 Then Exit Sub

NewComment = Target.Value & " Modifié le " & Now() & " par " & Application.UserName

If Target.Comment Is Nothing Then

Target.AddComment NewComment

Else

OldComment = Target.Comment.Text

Target.Comment.Text NewComment & vbLf & OldComment

End If

Target.Comment.Shape.TextFrame.AutoSize = True

Target.Comment.Visible = False

End Sub

Merci,

Cdlt,

Re,

Essaye le code suivant avec les modifications surlignées, bien sur les plages ou cellules concernées sont à adapter dans la parties surlignées :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim OldComment As String, NewComment As String, objCell As Range
    If Not Intersect(Target, Range("B24", "D16")) Is Nothing Then
        If Target.Cells.Count > 1 Then Exit Sub
        If Target.Column > 1 Then
            NewComment = Target.Value & " Modifié le " & Now() & " par " & Application.UserName
        End If
        If Target.Comment Is Nothing Then
            Target.AddComment NewComment
        Else
            OldComment = Target.Comment.Text
            Target.Comment.Text NewComment & vbLf & OldComment
        End If
        Target.Comment.Shape.TextFrame.AutoSize = True
        Target.Comment.Visible = False
    End If
End Sub

Re-

Merci beaucoup, j'ai compris et ça marche c'est super.

Merci à tous ces passionnés compétents qui ne comptent pas leur temps pour aider ceux qui n'y connaissent rien ou pas grand chose comme moi.

Bonne fin de week end et à bientôt sur le forum.

Mano

Rechercher des sujets similaires à "enregistrer feuille codes vba"