Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Envoyer une feuille par messagerie, sans les liens avec classeur original

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

degap05

XLDnaute Impliqué
Bonjour,

La macro en fichier joint, crée un classeur avec la feuille active, l'envoi par mail et ne le sauvegarde pas. A l’ouverture du classeur créé et expédié, apparait un message (voir feuille jointe). Cela fait sans doute référence à des liens présents sur la feuille originale. Ma macro d’envoi supprime les boutons et le code, mais je ne sais pas supprimer les liens avec le classeur d’origine.
Pouvez-vous m’aider ? Merci.

Merci
 

Pièces jointes

Re : Envoyer une feuille par messagerie, sans les liens avec classeur original

Bonjour

Si tu veux juste envoyer les valeurs tu peux faire un truc du style

Code:
Sub EnvoiFeuilleMail()
  'copie la feuille active
  ActiveSheet.Copy
Cells.Copy
    Cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A1").Select

  Application.DisplayAlerts = False
      'supprime le bouton
      ActiveSheet.Shapes(1).Select
      Selection.Cut
      'supprime le code
      With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
      .DeleteLines 1, .CountOfLines
      End With
  Application.DisplayAlerts = True
  'Envoi le classeur créé par mail
  ActiveWorkbook.SendMail "machin@truc.fr", _"Test envoi "
  'Ferme sans sauver
  ActiveWorkbook.Close False
  End Sub
 
Re : Envoyer une feuille par messagerie, sans les liens avec classeur original

Bonjour et merci PascalXLD,

J'ai un blocage complet d'Excel, lorsque je veux exécuter la macro sur une feuille qui contient le code suivant:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lig, Couleur As Long
Dim C As Range, Plage As Range
Lig = Target.Row
'coloration de la ligne en cours
For Each C In Target
If C.Column = 3 And C.Value <> "" Then
Range("B" & Lig).Value = "x"
Lig = C.Row
Set Plage = Range(Cells(Lig, "B"), Cells(Lig, "L"))
Plage.Interior.ColorIndex = 20
End If
Next
End Sub

Tout se déroule normalement sur les feuilles qui ne contiennent pas ce code.
Vois-tu pourquoi ?

Merci.
 
Dernière édition:
Re : Envoyer une feuille par messagerie, sans les liens avec classeur original

RE

je peux savoir ce qu'est sensé faire ce code car pour moi il y a un truc bizarre

car

en gros

Plage.Interior.ColorIndex = IIf(WorksheetFunction.CountA(Plage) = 1, 20, 20)

veut dire si la fontion renvoie 1 colorie avec la couleur 20 sinon colorie avec la couleur 20 😱
 
Re : Envoyer une feuille par messagerie, sans les liens avec classeur original


Tu as raison, en fait je veux juste que la plage sur la ligne se colore. J'ai copié rapidement ces lignes d'un autre de mes fichiers. Voici pour target en colonne 3:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lig, Couleur As Long
Dim C As Range, Plage As Range
Lig = Target.Row
'coloration de la ligne en cours
For Each C In Target
If C.Column = 3 And C.Value <> "" Then
Range("B" & Lig).Value = "x"
Lig = C.Row
Set Plage = Range(Cells(Lig, "B"), Cells(Lig, "L"))
Plage.Interior.ColorIndex = 20
End If
Next
End Sub


Comment indiquer de la colonne 3 à 12 ?

Merci.
 
Dernière édition:
Re : Envoyer une feuille par messagerie, sans les liens avec classeur original

Bonjour,

Je n'ai pas trouvé la solution à mon problème (en fait deux problèmes) 🙁
C'est pourquoi je reviens vers vous pour de l'aide.

Dans le classeur joint, une macro dans la feuille 1, permet de colorer la ligne lorsqu'une donnée est entrée de la colonne C à la colonne M.

Le premier souci se manifeste si je veux supprimer manuellement des données sur une ligne par exemple (1 donnée en colonne F, la ligne se colore). Je sélectionne une plage pour supprimer cette donnée et là ça se gâte......de la couleur se met dans toute la sélection.

Le deuxième problème qui ressemble au premier se produit lorsque je veux envoyer la copie de la feuille par messagerie. Indiquez votre adresse mail et actionner la macro. La feuille reçue est bleu sur toute la sélection A1:L43.

Problème qui provient peut-être de:

Private Sub Worksheet_Change(ByVal Target As Range)

Pouvez-vous m'aider à résoudre ce (ces) problème(s).

Merci.
 

Pièces jointes

Re : Envoyer une feuille par messagerie, sans les liens avec classeur original

Bonjour, j'aimerais savoir comment insérer vos lignes de codes dans ma feuille excel s.v.p. Je ne suis pas familiarisé avec ceci... Merci


Code:
Sub EnvoiFeuilleMail()
  'copie la feuille active
  ActiveSheet.Copy
Cells.Copy
    Cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A1").Select

  Application.DisplayAlerts = False
      'supprime le bouton
      ActiveSheet.Shapes(1).Select
      Selection.Cut
      'supprime le code
      With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
      .DeleteLines 1, .CountOfLines
      End With
  Application.DisplayAlerts = True
  'Envoi le classeur créé par mail
  ActiveWorkbook.SendMail "machin@truc.fr", _"Test envoi "
  'Ferme sans sauver
  ActiveWorkbook.Close False
  End Sub
[/QUOTE]
 
Dernière modification par un modérateur:
Re : Envoyer une feuille par messagerie, sans les liens avec classeur original

 

Pièces jointes

- 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

C
Réponses
2
Affichages
2 K
C
G
Réponses
0
Affichages
1 K
G
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…