Amélioration d'une macro & creation d'une macro d'envoi par mail
hd49
Messages postés
22
Statut
Membre
-
hd49 Messages postés 22 Statut Membre -
hd49 Messages postés 22 Statut Membre -
Bonjour,
Je débute en macro et j'ai besoin de votre aide sur le fichier suivant :
https://www.cjoint.com/?0JkmhrymRKl
J'ai réussi la 1ere étape c'est à dire scinder l'onglet "base" dans plusieurs onglets (1 par client). Pour cela, j'ai utilisé le code suivant :
Je voudrais faire plusieurs actions après cela :
1/ Ajouter le total de la colonne G, H et J sur la dernière ligne dans chaque onglet (comme dans mon onglet « Base »)
2/ Faire des colonnes de la même taille que mon onglet « Base » dans tous les onglets
3/ Faire une autre macro pour envoyer automatiquement chaque onglet à des destinataires différents et mettre un autre destinataire en « cc... ». Idéalement, il faudrait aussi que l'objet de mon mail change chaque mois et il faudrait aussi que j'ajoute un texte dans le corps du mail.
Merci de votre aide par avance.
Je débute en macro et j'ai besoin de votre aide sur le fichier suivant :
https://www.cjoint.com/?0JkmhrymRKl
J'ai réussi la 1ere étape c'est à dire scinder l'onglet "base" dans plusieurs onglets (1 par client). Pour cela, j'ai utilisé le code suivant :
Sub Pref()
Dim cell As Range
Application.ScreenUpdating = False
'en supposant que la feuille 'base de données' s'appelle Base
With Sheets("Base")
'extraction des valeurs uniques de la colonne des noms
'(=noms des clients)
.Range("AA1:AA2").ClearContents
.Columns("A:A").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=.Range("AA1:AA2"), _
CopyToRange:=.Columns("AB"), Unique:=True
'traitement de chaque client (boucle sur la liste de la colonne AB)
For Each cell In Range("AB2:AB" & Cells(2, "AB").End(xlDown).Row)
'ajout d'une feuille au nom du client
Sheets.Add.Name = cell.Value
'zone critères sur feuille Base
.Range("AA1").Value = .Range("A1").Value
.Range("AA2").Value = cell.Value
'tri sur la base de données
.Columns("A:J").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=.Range("AA1:AA2"), _
CopyToRange:=ActiveSheet.Columns("A:J"), Unique:=False
Next
'nettoyage de la feuille Base
.Columns("AA:AB").Clear
.Activate
End With
End Sub
Je voudrais faire plusieurs actions après cela :
1/ Ajouter le total de la colonne G, H et J sur la dernière ligne dans chaque onglet (comme dans mon onglet « Base »)
2/ Faire des colonnes de la même taille que mon onglet « Base » dans tous les onglets
3/ Faire une autre macro pour envoyer automatiquement chaque onglet à des destinataires différents et mettre un autre destinataire en « cc... ». Idéalement, il faudrait aussi que l'objet de mon mail change chaque mois et il faudrait aussi que j'ajoute un texte dans le corps du mail.
Merci de votre aide par avance.
A voir également:
- Amélioration d'une macro & creation d'une macro d'envoi par mail
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Programmer envoi mail gmail - Guide
- Créer une adresse mail hotmail - Guide
- Creation compte gmail - Guide
3 réponses
Bonjour,
Pour répondre à tes points 1 et 2, je te suggère, au lieu d'ajouter une feuille :
Pour ta question 3, voici un exemple de code à adapter :
https://www.commentcamarche.net/faq/36411-vb6-vba-envoi-mail-avec-l-objet-cdo
Pour répondre à tes points 1 et 2, je te suggère, au lieu d'ajouter une feuille :
Sheets.Add.Name = cell.Value, de copier ta feuille "base"
Sheets("base").Copy. Ensuite, tu fais ton filtre, sur place, dans ta nouvelle feuille...
Pour ta question 3, voici un exemple de code à adapter :
https://www.commentcamarche.net/faq/36411-vb6-vba-envoi-mail-avec-l-objet-cdo
Pijaku,
Je te remercie de ta proposition pour les points 1 et 2 mais ce n'est pas ce que je veux. En effet, j'aimerais que mes onglets soient prêts à être envoyé donc je ne veux pas les retoucher... Je voudrais "automatiser" l'ajout de la ligne "TOTAL" (présente dans l'onglet "Base") sur les onglets de chaque "client".
Est ce que quelqu'un d'autre a une idée ?
Je te remercie de ta proposition pour les points 1 et 2 mais ce n'est pas ce que je veux. En effet, j'aimerais que mes onglets soient prêts à être envoyé donc je ne veux pas les retoucher... Je voudrais "automatiser" l'ajout de la ligne "TOTAL" (présente dans l'onglet "Base") sur les onglets de chaque "client".
Est ce que quelqu'un d'autre a une idée ?