Macro pour copier coller une ligne selon la sélection d'un menu déroulant

Bonjour à tous,

Je souhaite créer une macro qui , en fonction d'un menu déroulant, copie la ligne, puis la colle dans une autre feuille de calcul du même fichier sheet. Je vous joins une photo pour que cela soit plus compréhensible.

exemple v3

J'ai une idée de comment écrire le programme en langage "naturel" mais je n'ai absolument aucune compétence en Appscript (j'ai juste fait du Scilab dans ma vie ) Dans ma tête le programme est le suivant :

var app= SpreadsheetApp.getActiveSpreadsheet();

var feuille= app.getSheetByName('Listes des articles'); // je sélectionne ma feuille

i=2

Pour i allant de 2 à dernière ligne de la feuille,

sélectionner Cellule Ci ;

Si cellule Ci == 'Existant',

alors sélectionner la ligne entière ;

puis copier la ligne entière ;

coller la ligne dans une autre feuille 'Articles existants' ;

Sinon i = i+1

fin de SI

Fin de pour

Tout cela est certainement très confus et viole de nombreuses règles de programmation mais j'espère que vous pourrez quand même comprendre mon problème.

Je vous remercie par avance pour le temps que vous prendrez à comprendre mon problème.

Je souhaite une bonne journée à tous les gens du forum !

Bonjour et

peux-tu mettre un lien vers ton fichier https://www.sheets-pratique.com/fr/cours/partage, cela facilitera la réponse en tenant compte des tes paramètres régionaux.

Merci pour le prompt retour, voici le lien vers mon fichier.

ok, mais il faut partager ton fichier (je t'ai demandé un accès sinon) https://www.sheets-pratique.com/fr/cours/partage,

si je reprends la spécification :

  • si existant =>
    • je copie la ligne, mais où ? il n'y a pas de feuilles "articles existants"
    • et je la supprime ?
  • si à modifier =>
    • je fais quoi ?
  • si à créer =>
    • idem ?
  • si à supprimer =>
    • idem ?

Si "existant" --> ne rien faire

Si "à modifier" --> copier / coller dans 'Articles à modifier' (tout en laissant la ligne dans 'liste des articles')

Si "à Créer" --> copier / coller dans 'Articles à créer' (tout en laissant la ligne dans 'liste des articles')

Si "à supprimer" --> ne rien faire

J'ai voulu prendre l'exemple avec existant mais je comprends que cela porte à confusion. Mes excuses pour l'incompréhension.

entre temps, j'ai travaillé, donc tu pourras adapter

function onEdit(event){
  var feuille = event.source.getActiveSheet();
  var cel = event.source.getActiveRange();
  if ((cel.getColumn() == 3) && (feuille.getName() == 'Liste des articles')){
    var destination = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(feuille.getRange(cel.getRow(),3).getValue());
    destination.insertRowBefore(2);
    var plage = feuille.getRange('A' + cel.getRow() + ':D' + cel.getRow());
    plage.copyTo(destination.getRange('A' + 2), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); 
    feuille.deleteRow(cel.getRow());
  }
}

la feuille est nommée comme les valeurs du menu déroulant

https://docs.google.com/spreadsheets/d/1DyRM-oDZJnck4Z3_H74Km8IsLuCYgN8BYF9b75hkw60/edit?usp=sharing

il faudra alors supprimer la ligne

feuille.deleteRow(cel.getRow())
et ne pas traiter Existant !
feuille.getRange(cel.getRow(),3).getValue() != 'Existant'

Merci beaucoup, cela fonctionne très bien. Je peux effectivement adapté à mes besoins.

Seule chose que je ne parviens pas à adapter c'est le fait que, dès lors que l'on a sélectionné une option dans le menu déroulant et que la ligne en question a belle et bien été copiée dans la feuille correspondante, cette option disparaît alors du menu déroulant pour les autres lignes. Je ne parviens à comprendre et trouver la source de ce problème.

Je vous remercie de nouveau c'est vraiment génial de pouvoir se faire aider.

Mais la référence des listes de validations n'existe pas ou plus !

image

j'ai donc créé un onglet spécifique pour cela : paramètres

Rechercher des sujets similaires à "macro copier coller ligne selection menu deroulant"