Macro Excel : enregistrer / envoyer mail / feuille blanche
mathis40
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
sifusalade Messages postés 134 Date d'inscription Statut Membre Dernière intervention -
sifusalade Messages postés 134 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je ne suis pas un expert en macro excel et malgré mes recherches je galère un peu donc je viens poser mes question ici :
Il s'agit d'un projet pour mes rapport de chantiers.
J'ai "coder" l'ensemble du rapport type avec 4 feuilles (Rapport de chantier, PDR, Données, Bibliothèque)
manque plus que quelque macro pour facilité le tout.
Écrites dans l'ordre du besoin :
MACRO ENREGISTRER SOUS
Vue qu'en général les travaux de la veille ressemble à ceux du lendemain, j'aimerais que le chef modifie en fin de journée son rapport du jour -1 et l'enregistre au jour J.
Mais chaque chef a un ordinateur différent
je voudrais donc que quand il appui sur le bouton (créer dans le classeur) ENREGISTRER SOUS que la page ENREGISTRER SOUS s'ouvre avec comme titre :
RC - NUMERO DE CHANTIER - CHEF DE CHANTIER - DATE DU JOUR XX/XX/XXXX
Informations respectivement dans les cellules
"RC"(juste RC sans cellule) - J2 - B1 - Q1 (au passage Q1 est fusionnée avec Q2) mais au pire des cas je peux toujours avoir un = de Q1 ailleurs écrit en blanc pour avoir une cellule non fusionnée)
Avec le chemin dans l'ordinateur pour accéder au bon dossier dans la cellule M60
NB : Si ENREGISTRER SOUS impossible mais seulement ENREGISTRER fonctionne, je prend quand même ^^, c'est juste que voir la fenêtre s'ouvrir peut rassurer les chefs en disant que c'est bien enregistrer.
MACRO ENVOYER PAR MAIL
Je voudrais ouvrir la fenêtre mail pour ... envoyer un mail avec : (on utilise outlook avec des adresses vinci-construction.fr)
En pièce jointe le rapport du jour avec le même nom RC - NUMERO DE CHANTIER - CHEF DE CHANTIER - DATE DU JOUR XX/XX/XXXX
Pour le destinataire : la cellule en liste déroulante : M64
Objet : le même nom toujours RC - ......
Message :
Ci-joint RC - ....
Cordialement
"Cellule B1" (ou apparait le nom du chef)
Que le chef n'est plus qu'à appuyer sur envoyer
MACRO FEUILLE BLANCHE
La seule que j'ai réussi mais qui ne fonctionne pas car il y a des cellules fusionnées,
Sub FEUILLEBLANCHE()
Sheets("Rapport de chantier").Range("B1:B2,J1:J2,Q1,C8:C17,E8:J17,A19:C28,E19:J28,B33:B42,E33:E42,H33:J42,A45:J54,A58:J67,L6:Q28,L32:R35,L38:R54").ClearContents
End Sub
Si quelqu'un a une solution ça serait bien sinon tant pis je me débrouillerais sans.
beaucoup de choses c'est vrai, en espérant avoir de l'aide
Cordialement
Mathis M.
Je ne suis pas un expert en macro excel et malgré mes recherches je galère un peu donc je viens poser mes question ici :
Il s'agit d'un projet pour mes rapport de chantiers.
J'ai "coder" l'ensemble du rapport type avec 4 feuilles (Rapport de chantier, PDR, Données, Bibliothèque)
manque plus que quelque macro pour facilité le tout.
Écrites dans l'ordre du besoin :
MACRO ENREGISTRER SOUS
Vue qu'en général les travaux de la veille ressemble à ceux du lendemain, j'aimerais que le chef modifie en fin de journée son rapport du jour -1 et l'enregistre au jour J.
Mais chaque chef a un ordinateur différent
je voudrais donc que quand il appui sur le bouton (créer dans le classeur) ENREGISTRER SOUS que la page ENREGISTRER SOUS s'ouvre avec comme titre :
RC - NUMERO DE CHANTIER - CHEF DE CHANTIER - DATE DU JOUR XX/XX/XXXX
Informations respectivement dans les cellules
"RC"(juste RC sans cellule) - J2 - B1 - Q1 (au passage Q1 est fusionnée avec Q2) mais au pire des cas je peux toujours avoir un = de Q1 ailleurs écrit en blanc pour avoir une cellule non fusionnée)
Avec le chemin dans l'ordinateur pour accéder au bon dossier dans la cellule M60
NB : Si ENREGISTRER SOUS impossible mais seulement ENREGISTRER fonctionne, je prend quand même ^^, c'est juste que voir la fenêtre s'ouvrir peut rassurer les chefs en disant que c'est bien enregistrer.
MACRO ENVOYER PAR MAIL
Je voudrais ouvrir la fenêtre mail pour ... envoyer un mail avec : (on utilise outlook avec des adresses vinci-construction.fr)
En pièce jointe le rapport du jour avec le même nom RC - NUMERO DE CHANTIER - CHEF DE CHANTIER - DATE DU JOUR XX/XX/XXXX
Pour le destinataire : la cellule en liste déroulante : M64
Objet : le même nom toujours RC - ......
Message :
Ci-joint RC - ....
Cordialement
"Cellule B1" (ou apparait le nom du chef)
Que le chef n'est plus qu'à appuyer sur envoyer
MACRO FEUILLE BLANCHE
La seule que j'ai réussi mais qui ne fonctionne pas car il y a des cellules fusionnées,
Sub FEUILLEBLANCHE()
Sheets("Rapport de chantier").Range("B1:B2,J1:J2,Q1,C8:C17,E8:J17,A19:C28,E19:J28,B33:B42,E33:E42,H33:J42,A45:J54,A58:J67,L6:Q28,L32:R35,L38:R54").ClearContents
End Sub
Si quelqu'un a une solution ça serait bien sinon tant pis je me débrouillerais sans.
beaucoup de choses c'est vrai, en espérant avoir de l'aide
Cordialement
Mathis M.
Configuration: Windows / Chrome 73.0.3683.103
A voir également:
- Macro Excel : enregistrer / envoyer mail / feuille blanche
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
1 réponse
Demande à la fois trop complète et pas assez. Tu devrais faire une demande pour chaque chose que tu veux.
Mais je vais quand même tenter de répondre ici.
Ta macro feuille blanche consiste à vider ta feuille ? Tu ne peux pas tout simplement supprimer les colonnes A à R ? (Ta colonne S deviendra A, T deviendra B etc...), sinon retiens que l'adresse d'une cellule fusionnée est toujours la première contenue dans la plage. Exemple si tu à fusionné de A1 à A12. Son adresse est A1. Si tu essaye de séléctionner A1 à A2 cela ne fonctionnera pas. Si tu sélectionnes A2, cela te prendra A1 à A12.
Pour ta macro qui envoi le mail :
J'ai eu la flemme tout saisir alors j'ai fais une recherche sur le net pour faire un copier/coller ????. Je suis tombé très très rapidement sur quelque chose de très bien que voici :
commence par ajouter la référence
Puis :
Pour ta macro enregistrer sous. Je n'ai absolument rien compris de ce que tu veux. Désolé.
Mais je vais quand même tenter de répondre ici.
Ta macro feuille blanche consiste à vider ta feuille ? Tu ne peux pas tout simplement supprimer les colonnes A à R ? (Ta colonne S deviendra A, T deviendra B etc...), sinon retiens que l'adresse d'une cellule fusionnée est toujours la première contenue dans la plage. Exemple si tu à fusionné de A1 à A12. Son adresse est A1. Si tu essaye de séléctionner A1 à A2 cela ne fonctionnera pas. Si tu sélectionnes A2, cela te prendra A1 à A12.
Pour ta macro qui envoi le mail :
J'ai eu la flemme tout saisir alors j'ai fais une recherche sur le net pour faire un copier/coller ????. Je suis tombé très très rapidement sur quelque chose de très bien que voici :
commence par ajouter la référence
Microsoft Outlook X.0 Object Libraryà ton Excel.
Puis :
Sub EnvoyerEmail(ByVal Sujet As String, ByVal Destinataire As String, ByVal ContenuEmail As String, Optional ByVal PieceJointe As String) On Error GoTo EnvoyerEmailErreur 'définition des variables Dim oOutlook As Outlook.Application Dim WasOutlookOpen As Boolean Dim oMailItem As Outlook.MailItem Dim Body As Variant Body = ContenuEmail 'vérification si le Contenu du mail n'est pas vide. Si oui, email n'est pas envoyé. Si vous voulez pouvoir envoyer les email vides, mettez en commentaire les 4 lignes de code qui suivent. If (Body = False) Then MsgBox "Mail non envoyé car vide", vbOKOnly, "Message" Exit Sub End If 'préparer Outlook PreparerOutlook oOutlook Set oMailItem = oOutlook.CreateItem(0) 'création de l'email With oMailItem .To = Destinataire .Subject = Sujet 'CHOIX DU FORMAT '---------------------- 'email formaté comme texte .BodyFormat = olFormatRichText .Body = Body 'OU 'email formaté comme HTML '.BodyFormat = olFormatHTML '.HTMLBody = "<html><p>" & Body & "</p></html>" '---------------------- If PieceJointe <> "" Then .Attachments.Add PieceJointe .Display '<- affiche l'email (si vous ne voulez pas l'afficher, mettez cette ligne en commentaire) .Save '<- sauvegarde l'email avant l'envoi (pour ne pas le sauvegarder, mettez cette ligne en commentaire) .Send '<- envoie l'email (si vous voulez seulement préparer l'email et l'envoyer manuellement, mettez cette ligne en commentaire) End With 'nettoyage... If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing Exit Sub EnvoyerEmailErreur: If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing MsgBox "Le mail n'a pas pu être envoyé...", vbCritical, "Erreur" End Sub Private Sub PreparerOutlook(ByRef oOutlook As Object) 'par Excel-Malin.com ( https://excel-malin.com ) '------------------------------------------------------------------------------------------------ 'Ce code vérifie si Outlook est prêt à envoyer des emails... Et s'il ne l'est pas, il le prépare. '------------------------------------------------------------------------------------------------ On Error GoTo PreparerOutlookErreur On Error Resume Next 'vérification si Outlook est ouvert Set oOutlook = GetObject(, "Outlook.Application") If (Err.Number <> 0) Then 'si Outlook n'est pas ouvert, une instance est ouverte Err.Clear Set oOutlook = CreateObject("Outlook.Application") Else 'si Outlook est ouvert, l'instance existante est utilisée Set oOutlook = GetObject("Outlook.Application") oOutlook.Visible = True End If Exit Sub PreparerOutlookErreur: MsgBox "Une erreur est survenue lors de l'exécution de PreparerOutlook()..." End Sub
Pour ta macro enregistrer sous. Je n'ai absolument rien compris de ce que tu veux. Désolé.