Macro googleSheets copie puis suppression ligne vide

Bonjour,

J'ai besoin d'aide pour créer une macro d'envoi de mail automatique.

J'ai un formulaire de Validation d'envoi appeler VALIDATION.

avec une liste de choix afin de choisir les mails à envoyer (si cocher le mail est envoyé)

Mon but est qu'une fois sélectionné, on active la macro, les mails s'envoient, les lignes A2:B20 se copient dans la feuille mail envoyé afin de ne pas envoyer deux fois le mail. et après je souhaiterais que les lignes vides de la feuilles mail envoyé soit supprimé.

Pouvez vous m'aider je pense avoir résolu le problème d'envoi mais la copie et le nettoyage des lignes vide me pose problème.

https://docs.google.com/spreadsheets/d/1fqYYLrY1FFdNSj1ebarjSArWnhgOIPq_xDknihcgf0U/edit?usp=sharing

Merci.

Bonjour

autorise a minima la lecture du fichier ... https://www.sheets-pratique.com/fr/cours/partage

image

D'autre part ...

les lignes A2:B20 se copient dans la feuille mail envoyé afin de ne pas envoyer deux fois le mail. et après je souhaiterais que les lignes vides de la feuilles mail envoyé soit supprimé.

  1. les lignes A2:B20 de quel onglet ? et pourquoi jusque 20 ?
  2. pourquoi les lignes de la feuille mail envoyé seraient vides ?

J'ai relié la macro,

Steelson, en faite je veux copier le nom de la personne a qui j'ai envoyé le mail. A2:A20 et l'ajouter dans la liste de la feuille Mail envoyé

Comme ça cela active mon filtre situé en M3 et je renvoie pas 2 fois le même mail.

J'ai défini une plage d'envoi de mail A2:F20.

Pour résumé voila ma vision :

Activation de Macro / Envoi mail dont adresse présente feuille "VALIDATION!A2:B20"/ Copie VALIDATION!A2:B20 vers feuille Mail Envoyé A2:B20/ Suppression des Lignes Si Vide si il y a pas eu 20 réponse / création de 20 Lignes au dessus "mail envoyé" A2:B20 pour permettre la prochaine validation/ retour page "VALIDATION"

Ma fonction d'envoi de mail.

function Confirmationmail() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.setActiveSheet(ss.getSheetByName("VALIDATION"));
var sheet = SpreadsheetApp.getActiveSheet(); var dataRange = sheet.getRange("A2:F20");
var data = dataRange.getValues();

for (i in data) {
var rowData = data[i];
var emailAddress = rowData[1];
var recipient = rowData[0];
var message1 = rowData[2];
var message2 = rowData[3];
var parameter2 = rowData[4];
var message3 = rowData[5];
var message = 'Madame, Monsieur' + recipient + ', \n\n' + message1 + ' ' + message2 + ' ' + parameter2 + ' ' + message3
var subject = 'La demande a bien été pris en compte';
MailApp.sendEmail(emailAddress, subject, message); } }

* Normalement la MACRO est accessible.

Re-

en faite je veux copier le nom de la personne a qui j'ai envoyé le mail. A2:A20 et l'ajouter dans la liste de la feuille Mail envoyé

Comme ça cela active mon filtre situé en M3 et je renvoie pas 2 fois le même mail.

J'ai défini une plage d'envoi de mail A2:F20.

Pour résumé voila ma vision :

Activation de Macro / Envoi mail dont adresse présente feuille "VALIDATION!A2:B20"/ Copie VALIDATION!A2:B20 vers feuille Mail Envoyé A2:B20/ Suppression des Lignes Si Vide si il y a pas eu 20 réponse / création de 20 Lignes au dessus "mail envoyé" A2:B20 pour permettre la prochaine validation/ retour page "VALIDATION"

Je ne suis pas sûr d'avoir bien saisi cette recette ... mais je viens de voir en effet M3, et là ...

=FILTER('BASE GENERALE'!A:B;'BASE GENERALE'!C:C>J1;'Mail envoyé'!C:C="")

comment expliquer le fonctionnement de ce filtre ? notamment comment sont reliées les données de la feuille Mail envoyé avec Base générale ? J'ai fait un essai en changeant la date, et on trouve alors le client 16 dans la feuille validation alors que le mail a été envoyé !

Bonjour,

J'ai retravaillé suite a ta remarque.

=FILTER('BASE GENERALE'!A:B;'BASE GENERALE'!C:C<J1;'BASE GENERALE'!D:D="")

Normalement c'est mieux.

Mais j'ai toujours mon problème de copie des lignes dans la base mail envoyé sans les lignes blanche :(.

Nouvelle question ... à quoi te sert maintenant l'onglet "mail envoyé" puisque tu as bien reporté en base général la date d'envoi ?

a créer une liste qui sera pas forcement dans le même sens que celle de la base générale.

compliqué d'enrichir la base générale sans passer par la formule RECHERCHEV

en faite je veux copier le nom de la personne a qui j'ai envoyé le mail. A2:A20 et l'ajouter dans la liste de la feuille Mail envoyé

ajoute ceci en fin de boucle

   for (i in data) { 
      var rowData = data[i]; 
      var emailAddress = rowData[1]; 
      var recipient = rowData[0]; 
      var message1 = rowData[2]; 
      var message2 = rowData[3]; 
      var parameter2 = rowData[4]; 
      var message3 = rowData[5]; 
      var message = 'Madame, Monsieur' + recipient + ', \n\n' + message1 + ' ' + message2 + ' ' + parameter2 + ' ' + message3
      var subject = 'Le SAV a bien été pris en compte'; 
      MailApp.sendEmail(emailAddress, subject, message); 

      var sheet2 = ss.getSheetByName("Mail envoyé")
      var lastRow = sheet2.getLastRow()+1;
      sheets2.getRange('A' + lastRow).setValue(recipient)
      sheets2.getRange('B' + lastRow).setValue(emailAddress)
      sheets2.getRange('C' + lastRow).setValue(new Date())

   } 

Merci

Si c'est ok pour toi, n'oublie pas de clore ce fil de discussion en cliquant sur

Rechercher des sujets similaires à "macro googlesheets copie puis suppression ligne vide"