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

image

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 !

Rechercher des sujets similaires à "google apps script"