Importrange et saisies manuelles de données

Avatar de l’utilisateur
jippeo

Membre tout neuf
Messages : 1
Inscription : 18 juil. 2024 11:19

Importrange et saisies manuelles de données

Message par jippeo »

Bonjour,

J'ai un fichier GoogleSheet destiné à avoir avec plusieurs onglets pour un suivi général d'événements (pointage billetterie, action de communication, etc.).
Je souhaite avoir un 1er onglet avec l'ensemble des informations d'un événement et d'autres onglets de suivi ne piochant que certaines données de ce 1er onglet et y ajouter par la suite des données manuelles selon les objectifs (un 2e onglet billetterie par exemple, un 2e stratégie de comm, etc.).

Pour l'exemple j'ai créé un fichier avec seulement 2 onglets :

- le 1er onglet intitulé "Events" est une liste d'événements avec toutes les données utiles dans autant de colonnes possibles (pour l'exemple 7 colonnes de données)

- dans un 2e onglet intitulé "Suivi" j'utilise la fonction "=query(IMPORTRANGE("lien du fichier";"Events!A1:E500"); "SELECT Col2, Col3")" pour faire apparaitre dans les colonnes A et B les données des colonnes 2 et 3 de mon 1er onglet

- jusqu'ici tout va bien

- à ce 2e onglet "Suivi" j'ajoute à partir de la colonne C des colonnes de suivi pour un pointage billetterie (par exemple) que je rentre manuellement (1x par semaine par exemple, donc potentiellement 52 colonnes à partir de la colonne C)

- lorsque j'ajoute un événement dans mon 1er onglet "Events", tout va bien s'il se situe en fin de liste

- mais lorsque j'ajoute un évènement entre 2 événements existants (par exemple entre mes lignes 4 et 6 dans l'exemple, en rouge), cela apparait bien dans le 2e onglet à la bonne place sur les colonnes automatisées mais mes données entrées manuellement (à partir de la colonne C) ne bougent pas (dans l'exemple la ligne 5 devrait être vide à partir de la colonne C car les données devraient se décaler d'une ligne vers le bas).

- comment faire pour que les données saisies manuellement se décalent lors de l'ajout d'un événement dans mon 1er onglet ?

J'ai tenté plusieurs choses, des formules ou des appscript. Soit cela ne fonctionnait pas, soit cela me décalait de plus d'une ligne vers le bas.Le fichier est consultable ici :
https://docs.google.com/spreadsheets/d/ ... sp=sharing

Merci pour votre aide

Jippeo
Thierry

Coach Numericoach
Invétéré
Messages : 126
Inscription : 11 sept. 2022 20:27
A remercié : 1 fois
Remercié : 21 fois

Re: Importrange et saisies manuelles de données

Message par Thierry »

Bonjour Jippeo,Je comprends bien ton souci et la frustration que cela peut engendrer. Pour résoudre le problème du décalage des données manuelles dans ton onglet "Suivi" lorsque tu ajoutes des événements dans l'onglet "Events", il faut utiliser un script Google Apps Script. Ce script va s'assurer que toutes les données se décalent correctement lorsque tu modifies ton premier onglet.Voici un guide étape par étape pour créer et utiliser ce script :Étape 1 : Accéder à Google Apps Script
  1. Ouvre ton fichier Google Sheets.
  2. Va dans le menu Extensions > Apps Script.
Étape 2 : Créer le script
  1. Supprime tout le contenu dans l'éditeur de script et remplace-le par le code suivant :
 javascript
Copier le code

Code : Tout sélectionner

function onEdit(e) { var sheet = e.source.getActiveSheet(); if (sheet.getName() == "Events") { var range = e.range; if (range.getNumRows() > 1 || range.getNumColumns() > 1) return; // Only process single cell edits var row = range.getRow(); var col = range.getColumn(); if (col == 1) { // Assuming the first column is the event name or unique identifier var suiviSheet = e.source.getSheetByName("Suivi"); var data = suiviSheet.getDataRange().getValues(); data.splice(row, 0, []); // Add an empty row at the correct position suiviSheet.getRange(1, 1, data.length, data[0].length).setValues(data); } } } 
Étape 3 : Enregistrer et autoriser le script
  1. Clique sur l'icône de disquette pour enregistrer le script et donne-lui un nom, par exemple "OnEditScript".
  2. Va dans le menu Exécuter > onEdit. La première fois que tu exécutes le script, tu devras autoriser les autorisations nécessaires. Suis les instructions pour accorder les autorisations.
Étape 4 : Tester le script
  1. Retourne à ton onglet "Events" et ajoute un nouvel événement entre deux événements existants.
  2. Vérifie l'onglet "Suivi" pour voir si les données manuelles se sont décalées correctement.
Explications supplémentaires :
  • Le script écoute les modifications dans l'onglet "Events". Lorsqu'une cellule est modifiée dans la première colonne (que l'on suppose être l'identifiant unique de l'événement), il insère une ligne vide correspondante dans l'onglet "Suivi".
  • Ce script peut être ajusté selon tes besoins spécifiques, notamment si l'identifiant unique n'est pas dans la première colonne.
Cette approche devrait résoudre le problème du décalage des données manuelles dans ton onglet de suivi. Si tu rencontres des difficultés ou si tu as des questions supplémentaires, n'hésite pas à revenir sur le forum.Bonne continuation et merci d'avoir fait appel à Numericoach !Excellente journée, Thierry
Avatar de l’utilisateur
realityimpolite

Membre tout neuf
Messages : 1
Inscription : 10 oct. 2024 11:30

Re: Importrange et saisies manuelles de données

Message par realityimpolite »

Voici comment procéder :

Calculer le nombre de lignes dans l'onglet "Events" :
Dans une cellule de l'onglet "Suivi", par exemple en C1, insérez la formule suivante :

=COUNTA(Events!A:A)
Cette formule compte le nombre de lignes non vides dans la colonne A de l'onglet "Events".

Modifier la formule QUERY:
Modifiez votre formule QUERY dans l'onglet "Suivi" pour qu'elle prenne en compte le nombre de lignes calculé précédemment. Par exemple :

=QUERY(IMPORTRANGE("lien du fichier";"Events!A1:E"&C1); "SELECT Col2, Col3")
Ici, C1 est remplacé par la cellule contenant le nombre de lignes. Cela permet de rendre la plage de données récupérée dynamique.

Gérer les données saisies manuellement:
Pour les données saisies manuellement à partir de la colonne C, vous pouvez utiliser la fonction OFFSET pour décaler les données en fonction de la nouvelle ligne ajoutée. Par exemple, si vous avez une valeur en C2, vous pouvez utiliser la formule suivante en C3 :

=OFFSET(C2;COUNTA(Events!A:A)-1;0)
Cette formule décale la valeur de C2 vers le bas d'un nombre de lignes égal au nombre de lignes dans l'onglet "Events" moins 1 (pour prendre en compte l'en-tête).

Exemple complet :

Supposons que vous voulez copier les valeurs des colonnes C, D et E de l'onglet "Events" dans l'onglet "Suivi" à partir de la colonne C. Vous pouvez utiliser la formule suivante en C2 de l'onglet "Suivi" :

=QUERY(IMPORTRANGE("lien du fichier";"Events!A1:E"&COUNTA(Events!A:A)); "SELECT Col3, Col4, Col5")
Et pour les lignes suivantes, vous utiliserez des formules OFFSET pour décaler les valeurs.

Avantages de cette solution:

Flexibilité: La formule QUERY s'adapte automatiquement au nombre de lignes dans l'onglet "Events"space waves
Simplicité: La fonction OFFSET permet de gérer facilement le décalage des données saisies manuellement.
Fiabilité: Cette solution garantit que les données dans les deux onglets sont toujours synchronisées.
Conseils supplémentaires:

Nommer les plages: Pour rendre vos formules plus lisibles, vous pouvez nommer les plages de données (par exemple, "plage_events" pour la plage A:A de l'onglet "Events").
Utiliser la validation des données: Pour éviter les erreurs de saisie, vous pouvez utiliser la validation des données pour restreindre les types de données autorisés dans certaines colonnes.
Protéger les formules: Si vous ne voulez pas que les utilisateurs modifient les formules, vous pouvez protéger les cellules contenant les formules.
En appliquant cette solution, vous devriez pouvoir résoudre votre problème et avoir un suivi dynamique de vos événements dans Google Sheets.

N'hésitez pas à me poser d'autres questions si vous avez besoin de plus d'explications.
Répondre

Rejoignez la discussion 💬

Vous devez être enregistré pour participer à la discussion et échanger avec les différents membres

Inscrivez-vous dès aujourd'hui

Vous n'êtes pas encore membre ? Rejoignez-nous gratuitement dès aujourd'hui et contribuer en postant votre réponse ou question sur tous les forums disponibles

Inscription

Connectez-vous