Script, remplissage auto

0

Bonjour, je cherche à automatiser la création et le remplissage d'un document exel à partir d'une ligne selectionner.
le but est de :

- Créer une copie de la feuille de base,
- Remplir la cellule C4 avec la 1er cellule de la ligne sélectionner,
- Remplir la cellule F4 avec la 2eme cellule de la ligne sélectionner,
- Remplir la cellule M4 avec la 3eme cellule de la ligne sélectionner,
- Remplir la 4eme cellule de la ligne avec la cellule L36,
- Rennomer la feuille par "DS-" suivi du contenu de la cellule C4

Pour le moment la copie de la feuille de base, et la renommer fonctionne, mais je ne sais pas comment remplir a partir de cellule selectionner.

Voici le script que j'ai pour le moment :

function main(workbook: ExcelScript.Workbook) {

  let base = workbook.getWorksheet("Base");

  let base__2_ = base.copy(ExcelScript.WorksheetPositionType.end);

  base__2_.getRange("'Base (2)'!C4").setFormula("='FICHE'!B64");

  base__2_.getRange("'Base (2)'!F4").setFormula("='FICHE'!C64");

  base__2_.getRange("'Base (2)'!M4").setFormula("='FICHE'!D64");

  base__2_.getRange("'FICHE'!F64").setFormula("='Base (2)'!L36");

  base__2_.setName("DS-" + base__2_.getRange("'Base (2)'!C4").getValue());

}

Pouvez vous m'aider ?
Posté le 13 janvier, 16:12
par anon25632145
Répondre
0

Bonjour anon,

je te propose ce fichier : https://www.cjoint.com/c/OAocagLAwn0

* regarde la 2ème feuille "Base" ; regarde la 1ère feuille "FICHE" ; fais Ctrl e.
* note que maintenant, tu es sur la 3ème feuille ; regarde son nom,
   puis regarde les données.
* retourne sur la 1ère feuille "FICHE" ; regarde E64.

fais Alt F11 pour voir le code VBA de Module1 ;
fais de nouveau Alt F11 pour revenir sur Excel.

si besoin, tu peux demander une adaptation ;
à te lire pour avoir ton avis.  :)

rhodo

Posté le 14 janvier, 03:02
  • Bonjour, Ton fichier à l'air trés intéréssent mais les macro ne fonctionne par sur mon ordinateur, c'est pourquoi il me faus un code pour un script dans exel et non pour VBA car le langue n'est pas le même. Il me faut un morceau de code pour ciblé une cellule sur une ligne selectioner avec les explication, ensuite je pourais l'adapter pour les autre cellule. Il suffit du code pour remplacer cette ligne et je me chargerais du reste : base__2_.getRange("C4").setFormula("='DCE TCE'!B64"); Merci pour ta proposition – anon25632145 14 janvier, 08:38
0

@anon

je ne connais pas le code script, mais pour la ligne que tu as indiquée, selon les lignes
déjà présentes, il me semble que tu dois adapter comme suit :

1) pour la partie gauche :

* si la feuille active à partir de laquelle tu lances le script est toujours la bonne feuille,
tu peux laisser comme c'est : 
base__2_.getRange("C4") ; il semble que cette feuille
est "FICHE" ; même si c'est une autre feuille, ça marchera aussi.

* si tu lances le script à partir d'une feuille quelconque, alors il faut obligatoirement
indiquer le nom de la feuille ; donc si c'est la cellule C4 de la feuille "FICHE" :
base__2_.getRange("'FICHE'!C4") ; ou même : base__2_.getRange("FICHE!C4")
car les quotes (= apostrophes) sont obligatoires seulement s'il y a au moins un
espace dans le nom de la feuille ; exemple : base__2_.getRange("'Base (2)'!C4").

* dans mon code VBA, après copie de la feuille "Base", c'est cette nouvelle feuille
"Base (2)" qui est devenue la feuille active ; la cellule C4 est donc celle de la
feuille active "Base (2)" ; c'est en dernier que cette feuille a été renommée en
"DS-" & [C4].

2) pour la partie droite :

cellule B64 : ok ; mais là, tu utilises une feuille que tu n'avais pas mentionnée
auparavant : c'est ni "FICHE", ni "Base", ni "Base (2)", ni "DS-" & [C4], c'est :
'DCE TCE' ; alors si c'est bien ce que tu veux : ok ; sinon, il faut adapter.

par exemple comme suit : setFormula("='Base (2)'!B64") ; ce qui donne ceci :
base__2_.getRange("C4").setFormula("='Base (2)'!B64") ; ou si c'est après
avoir renommé la feuille :

base__2_.getRange("C4").setFormula("=""DS-""&C4&'!B64")

comme il y a déjà les 2 guillemets de la formule, utiliser un double guillemet
pour encadrer DS- ; peut-être qu'il faudrait utiliser INDIRECT() ?

j'espère que ces pistes pourront t'aider ; bonne chance !  :)

rhodo

rhodo Posté le 14 janvier, 13:02
par rhodo

Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :