Macro Excel vers Google Sheet

Bonjour , je souhaiterai transférer cette macro EXcel coté Google Sheet , quelqu'un pour m'aider svp ?

-------

Option Explicit

Sub Ajout()
Dim lig As Long, i As Byte
lig = Range("A3") - Range("B10") + 10
For i = 3 To 13
Cells(lig, i).Value = Cells(4, i).Value
Cells(4, i).Value = ""
Next

End Sub

-------

8test-temps.xlsm (18.27 Ko)

--------

Quelqu'un pour regarder ce sujet svp ?

Bonjour,

J'ai déplacé le sujet dans le bon forum je pense, merci d'y faire attention

Bonjour,

Quelqu'un pour regarder ce sujet svp ?

peux-tu mettre un lien vers un fichier simplifié, ceci permet entre autre de vérifier tes paramètres locaux (et bien sûr faciliter la réponse pour nous)

avec 2 instructions

on devrait s'en sortir

Bonjour,

désolé je suis novice mais je ne peux pas faire un fichier plus simple que celui joint si ? ....

a minima un fichier Google Sheets !

Bonjour,

Voici le lien.

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

En gros je voudrais que lorsque je clique sur le bouton de la macro, les résultats ce copie automatiquement dans le tableau en fonction de la date du jour.

Voici

function valider() {
  var f = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
  var plage = f.getRange("D5:N5");
  var ligne = f.getRange('A6').getValue();
  plage.copyTo(f.getRange("D"+ligne), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); 
  plage.clearContent();
}

Au top merci beaucoup !!

Obligé d'avoir la case 24 (=EQUIV(A5;C:C;0)) en dessous de la date ?

non, c'était plus simple c'est tout

function valider() {
  var f = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var dates = f.getRange('C11:C'+f.getLastRow()).getDisplayValues().join().split(',')
  var plage = f.getRange("D5:N5");
  var quand = f.getRange('A5').getDisplayValue();
  var ligne = dates.indexOf(quand)+11;
  plage.copyTo(f.getRange("D"+ligne), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); 
  plage.clearContent();
}

Super ,ça marche bien !!

Dernière questions, si l'on veut appliquer la macro sur plusieurs onglet ? j'ai rajouté un onglet au fichier

Super ,ça marche bien !!

Dernière questions, si l'on veut appliquer la macro sur plusieurs onglet ?

J'ai édité le code mais il y a une erreur je pense sur le changement d'onglet & la récupération de date sur le premier onglet

----------

function valider() {
var f = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var dates = f.getRange('C11:C'+f.getLastRow()).getDisplayValues().join().split(',')
var plage = f.getRange("D5:N5");
var quand = f.getRange('A5').getDisplayValue();
var ligne = dates.indexOf(quand)+11;
plage.copyTo(f.getRange("D"+ligne), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
plage.clearContent();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Feuille 2'), true);
var dates = f.getRange('B10:10'+f.getLastRow()).getDisplayValues().join().split(',')
var plage = f.getRange("C4:M4");
var quand = f.getRange(spreadsheet.getSheetByName('Feuille 1;A5').getDisplayValue()
var ligne = dates.indexOf(quand)+10; spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Feuille 2'), true)
plage.copyTo(f.getRange("D"+ligne), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
plage.clearContent();
}

il manque pas grand chose , mais il y a de quoi s'arracher les cheveux quand on ne connaît pas bien les bases.

D'abord, mets ton code avec l'aide de </> que tu trouve au-dessus du cadre de dialogue, cela le rend lisible et n'entrave pas l'indentation.

Après, je ne suis pas d'accord d'avoir des onglets différents, l'un commence en D5, l'autre en C4, c'est tordu.

Il suffit de conserver le même code et l'appliquer une fois sur Feuille 1 et une fois sur Feuille 2.

Questions :

  1. la date se trouve uniquement sur Feuille 1 ?
  2. et le bouton uniquement sur Feuille 1 ?

Bonsoir,

Effectivement sur chaque onglet les tableaux ne sont pas aux mêmes endroits... mais je n'ai pas le choix.

  1. Le but serait effectivement de n'avoir qu'un bouton pour tous les onglets.
  2. Avec la cellule de date seulement sur la première feuille mais si ce n'est pas possible je la rajouterai sur chacune.

ok, j'en tiendrai compte ... rendez-vous demain !

function valider() {
  var doc = SpreadsheetApp.getActiveSpreadsheet()
  var f = doc.getActiveSheet();
  var quand = f.getRange('A5').getDisplayValue();

  var dates = f.getRange('C11:C'+f.getLastRow()).getDisplayValues().join().split(',')
  var plage = f.getRange("D5:N5");
  var ligne = dates.indexOf(quand)+11;
  plage.copyTo(f.getRange("D"+ligne), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); 
  plage.clearContent();

  var f = doc.getSheetByName('Feuille 2')
  var dates = f.getRange('B10:B'+f.getLastRow()).getDisplayValues().join().split(',')
  var plage = f.getRange("C4:M4");
  var ligne = dates.indexOf(quand)+11;
  plage.copyTo(f.getRange("C"+ligne), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); 
  plage.clearContent();
}

Merci beaucoup !!

Rechercher des sujets similaires à "macro google sheet"