Google Apps Script
mais surtout essaye parfois de déplacer certaines cellules comme "valider l'inventaire" qui pourrait être colonne E plutôt que F
Salutations,
J'aimerais solliciter votre aide, je ne connais pas du tout google sheets mais je me débrouille avec le VBA.
J'ai fait un programme qui fonctionne sur excel mais je ne sais pas comment le traduire en script.
Sub CopieFeuilleManager()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)(ligne)
Dim J As Integer 'déclare la variable J (incrément)(variable)
Dim K As Integer 'déclare la variable K (incrément)(colonne)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Set OS = Worksheets("Base de donnée") 'définit l'onglet OS
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
D(Left(TV(I, 1), 1)) = "" 'alimente le dictionnaire D avec les deux premiers caractères de la donnée ligne I colonne 1 de TV
Next I 'prochaine ligne de la boucle
TMP = D.Keys 'récupère dans le tableau temporaire TMP la liste des départements du dictionnaire D sans doublons
For J = 0 To UBound(TMP) 'boucle 1 : sur tous les départements J du tableau temporaire TMP
K = 0: Erase TL 'initialise K, efface TL
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set OD = Worksheets(TMP(J)) 'définit l'onglet destination OD (l'onglet du département), génère une erreur si cet onglet n'existe pas
If Err > 0 Then 'condition : si une erreur a été générée
Err.Clear 'supprime l'erreur
Worksheets.Add After:=Sheets(Sheets.Count) 'ajoute une onglet vierge en dernière position
Set OD = ActiveSheet 'définit l'onglet OD
OD.Name = TMP(J) 'nomme l'onglet OD
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
OD.Cells.Clear 'efface le contenu de l'onglet OD
OD.Range("A1").Resize(1, UBound(TV, 2)).Value = Application.Index(TV, 1) 'recopie la ligne d'en-têtes
For I = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If Left(TV(I, 1), 1) = TMP(J) Then 'si les deux premiers caractères de la donnée de la boucle 2 en colonne 1, correspondent au département J de la boucle 1
K = K + 1 'incrémente K
ReDim Preserve TL(1 To 11, 1 To K) 'redimensionne le tableau des lignes TL (3 lignes, K colonnes)
TL(1, K) = TV(I, 1) 'récupère dans la ligne 1 de TL la donnée en colonne 1 de TV (=> transposition)
TL(2, K) = TV(I, 2) 'récupère dans la ligne 2 de TL la donnée en colonne 2 de TV (=> transposition)
TL(3, K) = TV(I, 3) 'récupère dans la ligne 3 de TL la donnée en colonne 3 de TV (=> transposition)
TL(4, K) = TV(I, 4) 'récupère dans la ligne 1 de TL la donnée en colonne 1 de TV (=> transposition)
TL(5, K) = TV(I, 5) 'récupère dans la ligne 2 de TL la donnée en colonne 2 de TV (=> transposition)
TL(6, K) = TV(I, 6) 'récupère dans la ligne 3 de TL la donnée en colonne 3 de TV (=> transposition)
TL(7, K) = TV(I, 7) 'récupère dans la ligne 1 de TL la donnée en colonne 1 de TV (=> transposition)
TL(8, K) = TV(I, 8) 'récupère dans la ligne 2 de TL la donnée en colonne 2 de TV (=> transposition)
TL(9, K) = TV(I, 9) 'récupère dans la ligne 3 de TL la donnée en colonne 3 de TV (=> transposition)
TL(10, K) = TV(I, 10) 'récupère dans la ligne 1 de TL la donnée en colonne 1 de TV (=> transposition)
TL(11, K) = TV(I, 11) 'récupère dans la ligne 1 de TL la donnée en colonne 1 de TV (=> transposition)
End If 'fin de la condition
Next I 'prochaine ligne de la boucle 2
'si K est supérieure à zéro, renvoie le tableau TL transposé dans A2 redimensionnée de l'onglet OD
If K > 0 Then OD.Range("A2").Resize(K, UBound(TV, 2)).Value = Application.Transpose(TL)
Next J 'prochain département de la boucle
End Sub
Sub ModifNoms()
Sheets("1").Select
Sheets("1").Name = "CHEVRIER Laurent"
Sheets("2").Select
Sheets("2").Name = "VILAIN Benjamin"
Sheets("3").Select
Sheets("3").Name = "BENETREAU François"
Sheets("4").Select
Sheets("4").Name = "COUTURIER Coline"
Sheets("5").Select
Sheets("5").Name = "DESMARE Alban"
Sheets("6").Select
Sheets("6").Name = "PABOT Clément"
Sheets("7").Select
Sheets("7").Name = "SOULAGES Thibault"
Sheets("8").Select
Sheets("8").Name = "Externe"
Sheets("0").Select
Sheets("0").Name = "Consltants Partis"
End Sub
Sub RetourN°()
Sheets("CHEVRIER Laurent").Select
Sheets("CHEVRIER Laurent").Name = "1"
Sheets("VILAIN Benjamin").Select
Sheets("VILAIN Benjamin").Name = "2"
Sheets("BENETREAU François").Select
Sheets("BENETREAU François").Name = "3"
Sheets("COUTURIER Coline").Select
Sheets("COUTURIER Coline").Name = "4"
Sheets("DESMARE Alban").Select
Sheets("DESMARE Alban").Name = "5"
Sheets("PABOT Clément").Select
Sheets("PABOT Clément").Name = "6"
Sheets("SOULAGES Thibault").Select
Sheets("SOULAGES Thibault").Name = "7"
Sheets("Externe").Select
Sheets("Externe").Name = "8"
Sheets("Consltants Partis").Select
Sheets("Consltants Partis").Name = "0"
End Sub
Merci de votre aide
KMH
Bonjour,
1- ouvre un nouveau sujet pour ne pas tout mélanger
2- non, cela ne se "traduit" pas car il peut y avoir des solutions autres qu'un script par exemple ... donc exprime plutôt les fonctions à réaliser et partage un document exemple anonymisé
après plusieurs essai, cela fonctionne mais nous avons un problème c'est ça efface des cellule et des colonne qui ne devant pas être effacer.
ça efface les cellules suivante : C2,D2,F2,A7,B7,C7
ça efface aussi la colonne E, a partir de ligne 11
la casse a cocher valide l'inventaire est efface aussi même après l'avoir déplacer
Curieux, car j'avais proposé les paramètres suivants
var excl = ['Feuille 1', 'verification des vehicules', 'Grpahique1', 'validation de donnees', 'CdC']; //excluded sheets let zones = ['D7', 'E7', 'F7', 'G7'] // seront effacées let colonnes = ['F', 'H'] let ligne = 11
pour tous les onglets-véhicules, la même chose
et il n'y a pas C2,D2,F2,A7,B7,C7, ni de colonne E
peux-tu partager le fichier ou donner le script ?
L'accès est refusé ! Merci de partager comme suit ... https://www.sheets-pratique.com/fr/cours/partage
https://docs.google.com/spreadsheets/d/1JbeMVTPyiV3HnutkBYSyI4Ajx-WvnKuzBJZqk7WB0_o/edit
J’Espère que ça va fonctionner maintenant car j’ai modifié les droit d’accès
Il y a des MFC à tire-larigot qui font que lorsque les données sont effacées (exemple D3) alors F2 et G2 sont en blanc sur fond blanc, idem pour les autres. Le problème vient de MFC et de l'incohérence entre la plage et la formule

attention, la formule est valable pour la première cellule en haut à gauche de la zone spécifiée, donc ici valable pour C1, et tu testes B2, une cellule en dessous et à gauche.
la clé de la réussite est de faire des choses simples !