Macro 'Automatisation Mots Cles' Le sujet est résolu

Y compris Google Docs, Slides et toute autre question en lien avec une application Google
L
Laurent_74
Jeune membre
Jeune membre
Messages : 15
Appréciation reçue : 1
Inscrit le : 7 avril 2019
Version de Calc : 6.1.5.2 Calc

Message par Laurent_74 » 15 avril 2019, 13:19

Bonjour à tous,

je reviens vers vous car je souhaite maintenant Créer une Macro 'Automatisation Mots Cles'
1) Sur Feuille 'Base de Donnees' Lancer macro Annulation Filtre
2) Sur Feuille 'Moteur de Recherche' Rentrer Choix 1 dans cellule H5
3) Sur Feuille 'Base de Donnees' Lancer Macro 'Mot Cles'
4) Dans la Feuille 'Résultat', je veux effacer toutes les données
5) Copier le résultat de la Feuille 'Base de Donnees' dans la Feuille 'Résultat' en maintenant Colonne B, C, D ,E soit
(Numéro Série SN, Libellé SN, Texte de Saisie, Source) toute en mettant la ligne 1 en Gras

J'ai créé ce script
function AutomatisationMotsCles() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Base de Donnees'), true);
AnnulationFiltre();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Moteur de Recherche'), true);
spreadsheet.getRange('H5').activate();
spreadsheet.getCurrentCell().setValue('CLE5');
spreadsheet.getRange('H6').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Base de Donnees'), true);
MotsCles();
spreadsheet.getRange('B:E').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Résultat'), true);
spreadsheet.getRange('\'Base de Donnees\'!B:E').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
spreadsheet.getRange('1:1').activate();
spreadsheet.getActiveRangeList().setFontWeight('bold');
};
Je souhaiterai Saisir n'importe quelle autre valeur que CLE5 en H5 Sur la Feuille 'Moteur de Recherche' et pour l'instant je sèche
Avez-vous une idée ?
Jevous envoie le fichier en Pièce jointe.

Merci pour tout

PS : Surtout n'hésitez pas à remettre en cause ma vision de la macro si vous trouvez que je la complexifie trop. Donnez moi votre avis SVP.
Merci
Finalisation Macro.xlsx
(62.73 Kio) Téléchargé 1 fois
m
m3ellem1
Membre dévoué
Membre dévoué
Messages : 608
Appréciations reçues : 39
Inscrit le : 18 décembre 2018
Version d'Excel : 2016

Message par m3ellem1 » 15 avril 2019, 13:45

Slt Laurent,

essaie comme ca:
function AutomatisationMotsCles() {
  var Twb=SpreadsheetApp.getActiveSpreadsheet();

  var x = Twb.getSheetByName('Moteur de Recherche');
  var y = Twb.getSheetByName('Base de Donnees');
  var z = Twb.getSheetByName('Résultat');
 
  var valeurH5 = x.getRange(5,8).getValue();
  var criteria = SpreadsheetApp.newFilterCriteria()
    .whenTextContains(valeurH5)
    .build();
  y.getFilter().setColumnFilterCriteria(1, criteria)

  y.getRange('B:E').copyTo(z.getRange('A1'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
  z.getRange("A1:D1").activate();
  z.getActiveRangeList().setFontWeight('bold'); 
};
Modifié en dernier par m3ellem1 le 15 avril 2019, 23:06, modifié 1 fois.
L
Laurent_74
Jeune membre
Jeune membre
Messages : 15
Appréciation reçue : 1
Inscrit le : 7 avril 2019
Version de Calc : 6.1.5.2 Calc

Message par Laurent_74 » 15 avril 2019, 16:27

Salut,

c'est génial, tu es un vrai chef.
Par contre je suis frustré, je n'ai rien compris ou presque.
1) Peux-tu m'expliquer ta construction ?
2) Mon approche était elle pourrie ?
3) Est il possible de mettre un bouton sur la feuille 'Moteur de Recherche' en I5 qui lorsque l'on clique dessus déclenche la Macro AutomatisationMotsCles() ?

Merci pour tout. Tu m'enlèves une énorme épine du pied.

D'après toi, quelle est la meilleure manière de se former à la construction de macro sous Sheets, Calc, Excel ?

Merci pour tout.
J'attends tes réponses avec impatience
m
m3ellem1
Membre dévoué
Membre dévoué
Messages : 608
Appréciations reçues : 39
Inscrit le : 18 décembre 2018
Version d'Excel : 2016

Message par m3ellem1 » 15 avril 2019, 23:39

Salut Laurent,
Laurent_74 a écrit :
15 avril 2019, 16:27
1) Peux-tu m'expliquer ta construction ?
c'est la même salade qu'on avait fait avant sauf qu'on a ajouté le copier/coller et le formattage
y.getRange('B:E').copyTo(z.getRange('A1'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
z.getRange("A1:D1").activate();
z.getActiveRangeList().setFontWeight('bold');
Laurent_74 a écrit :
15 avril 2019, 16:27
2) Mon approche était elle pourrie ?
elle est bien (puisque c'est une macro enregistrée) :mrgreen:
Laurent_74 a écrit :
15 avril 2019, 16:27
3) Est il possible de mettre un bouton sur la feuille 'Moteur de Recherche' en I5 qui lorsque l'on clique dessus déclenche la Macro AutomatisationMotsCles() ?
oui
1- Insertion ==> Dessin ==> Formes ==> Boutton de droite ==> modifier le Texte (inserer un texte) ==> Enregistrer et fermer
2- un clique gauche sur le boutton et tu cliques sur les 3 points ==> Attribuer un script
3- dans la boite Assigner le Script insére: AutomatisationMotsCles ==> ok
4- lancer la macro en cliquant sur le boutton
->demande autorisation
->revoir permission
->choisir le compte autorisé
message cette application n'est pas validée
->paramètres avancés
->accéder à mon projet (non sécurisé)
->autoriser
Laurent_74 a écrit :
15 avril 2019, 16:27
D'après toi, quelle est la meilleure manière de se former à la construction de macro sous Sheets, Calc, Excel ?
Perso j'ai lû les cours gratuits du forum (en haut t'as les liens: Cours Excel, Cours VBA, Cours VBA Avancé). Mais il faut aller doucement et surtout lire les différents sujets du forum.

Bonne chance et à la prochaine (°v°)°

:btres:
L
Laurent_74
Jeune membre
Jeune membre
Messages : 15
Appréciation reçue : 1
Inscrit le : 7 avril 2019
Version de Calc : 6.1.5.2 Calc

Message par Laurent_74 » 16 avril 2019, 09:58

Salut,
c'est vraiment très gentil de m'avoir aidé.
Merci aussi pour ce super Forum.
A très bientôt
L
Laurent_74
Jeune membre
Jeune membre
Messages : 15
Appréciation reçue : 1
Inscrit le : 7 avril 2019
Version de Calc : 6.1.5.2 Calc

Message par Laurent_74 » 17 avril 2019, 12:10

Salut,

j'ai dû modifié ta macro pour pouvoir enchaîner différentes recherches.
Elle fonctionne parfaitement sauf que je vois tous les steps de déroulement de la macro.
A quoi s'est dû, peut-on gommer ce défaut ?

Merci pour tout.

function AutomatisationMotsCles() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Base de Donnees'), true);
  AnnulationFiltre();
  
  var Twb=SpreadsheetApp.getActiveSpreadsheet();

  var x = Twb.getSheetByName('Moteur de Recherche');
  var y = Twb.getSheetByName('Base de Donnees');
  var z = Twb.getSheetByName('Résultat');
 
  var valeurH5 = x.getRange(5,8).getValue();
  var criteria = SpreadsheetApp.newFilterCriteria()
    .whenTextContains(valeurH5)
    .build();
  y.getFilter().setColumnFilterCriteria(1, criteria)

  y.getRange('B:E').copyTo(z.getRange('A1'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
  z.getRange("A1:D1").activate();
  z.getActiveRangeList().setFontWeight('bold'); 
};
m
m3ellem1
Membre dévoué
Membre dévoué
Messages : 608
Appréciations reçues : 39
Inscrit le : 18 décembre 2018
Version d'Excel : 2016

Message par m3ellem1 » 17 avril 2019, 12:25

Slt Laurent,

je ne pense pas que l'équivalent du “ScreenUpdating” existe
L
Laurent_74
Jeune membre
Jeune membre
Messages : 15
Appréciation reçue : 1
Inscrit le : 7 avril 2019
Version de Calc : 6.1.5.2 Calc

Message par Laurent_74 » 17 avril 2019, 12:33

Merci mais ce que je souhaite c'est de ne pas perdre en fluidité....
Pourquoi la macro remaniée n'est elle pas aussi fluide?
As tu une idée ?
Merci
Avatar du membre
James007
Passionné d'Excel
Passionné d'Excel
Messages : 9'244
Appréciations reçues : 181
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 20 avril 2019, 21:31

Effectivement l'équivalent de ScreenUpdating n'existe pas dans Google Sheets ... comme beaucoup d'autres choses ... :wink:

Si tu as besoin d'optimiser ton code ... tu peux jeter un oeil sur ce lien :

https://developers.google.com/apps-scri ... -practices

En espèrant que cela t'aide ...
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
L
Laurent_74
Jeune membre
Jeune membre
Messages : 15
Appréciation reçue : 1
Inscrit le : 7 avril 2019
Version de Calc : 6.1.5.2 Calc

Message par Laurent_74 » 21 avril 2019, 08:06

Je te remercie de ton aide
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message