Cases à cocher sur query ou importrange Le sujet est résolu

Avatar de l’utilisateur
TheZig
Messages : 32
Inscription : 18 mars 2023 18:08
A remercié : 7 fois
Remercié : 3 fois

Cases à cocher sur query ou importrange

Message par TheZig »

Bonjour,
Je fais un query de données à partir de l'onglet d'un classeur( ou un importRange si c'est un classeur externe) et j'aimerais ajouter des données au bout de chaque ligne (en fait, faire un pointage par case à cocher)
J'ai deux problèmes:
 1- D'abord, je voudrais que les cases à cocher s'ajoutent automatiquement dans la colonne de bout de ligne quand il y a un enregistrement en face... Je n'ai pas trouvé de formule qui permette de faire ça, avec un arrayormula ,comme on fait pour obtenir des totaux, par exemple, ou avec un format conditionnel, mais est-ce que ça existe ?
Je pourrais peut-être faire une macro avec un onChange, ou quelque chose comme ça ? Mais bon j'ai déjà pas mal de macros et je ne voudrais pas que ça ralentisse trop le traitement, déjà que ça rame un peu.


2- le problème de ces données en bout de ligne est que bien sûr, elles ne sont pas dynamiques, contrairement celles du query ou de importrange, donc vous voyez un peu le problème ? S'il prend la fantaisie à quelqu'un d'insérer une ligne dans l'onglet d'origine ou bien de faire un tri dans les données,  les données fixes ne vont plus correspondre !
​​​
Comment pourrais-je résoudre cela ?
Je me suis dit qu'il faudrait que ces données aient peut-être une colonne id commune ,  mais je ne vois pas comment mettre en œuvre à partir de là...

Bref, un petit coup de pouce ce serait le bienvenu 😉
​​​​​​
 
Ce qui se conçoit bien, s'énonce clairement (Boileau) 
Thierry

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

Re: Cases à cocher sur query ou importrange

Message par Thierry »

Bonjour,Pour résoudre vos deux problèmes, nous allons explorer plusieurs solutions. Je vais essayer de vous proposer des méthodes qui minimisent l'usage de scripts ou de macros, en privilégiant autant que possible les fonctionnalités intégrées de Google Sheets. Cependant, étant donné la nature de votre demande, certaines solutions nécessiteront un peu de script.1. Ajouter automatiquement des cases à cocherSolution sans scriptGoogle Sheets ne permet pas d'ajouter directement des cases à cocher via une formule dans

Code : Tout sélectionner

ARRAYFORMULA
. Une solution serait d'utiliser une colonne dédiée où vous préinsérez manuellement des cases à cocher sur un grand nombre de lignes. Vous pouvez ensuite utiliser des formules pour ne "afficher" ces cases à cocher que lorsque la ligne correspondante contient des données.Solution avec scriptPour une solution plus dynamique, un script

Code : Tout sélectionner

onEdit
ou

Code : Tout sélectionner

onChange
peut être utilisé pour ajouter des cases à cocher automatiquement en fin de ligne lorsque des données sont entrées ou modifiées. Voici un exemple simple de script qui pourrait être adapté à vos besoins :
 

Code : Tout sélectionner

function onEdit(e) { var sheet = e.source.getActiveSheet(); // Assurez-vous de remplacer 'NomFeuille' par le nom réel de votre feuille if(sheet.getName() === 'NomFeuille') { var range = e.range; var row = range.getRow(); var lastColumn = sheet.getLastColumn(); var cell = sheet.getRange(row, lastColumn + 1); if(!cell.isChecked()) { cell.insertCheckboxes(); } } } 
Ce script vérifie si la modification a lieu dans la feuille spécifique et ajoute une case à cocher dans la colonne suivant immédiatement la dernière colonne de données de la ligne modifiée.2. Garder les données synchroniséesUtiliser une colonne IDL'approche d'utiliser une colonne ID pour chaque enregistrement est judicieuse. Vous pouvez assigner un ID unique à chaque ligne de données dans votre source originale et inclure cet ID dans votre requête QUERY ou IMPORTRANGE. Cela permet de maintenir une référence constante à chaque enregistrement, même si les lignes sont réarrangées ou modifiées.Mise en œuvre
  • Dans la source originale : Assurez-vous que chaque ligne de données a un ID unique.
  • Dans le classeur cible : Importez l'ID avec vos données. Placez vos cases à cocher dans une colonne adjacente et utilisez une formule de recherche (

    Code : Tout sélectionner

    VLOOKUP
    ou

    Code : Tout sélectionner

    INDEX
    et

    Code : Tout sélectionner

    MATCH
    ) pour associer les données dynamiques avec les cases à cocher en fonction de l'ID.
Exemple de formule de rechercheSupposons que votre ID soit dans la colonne A et vos données dans les colonnes B à D. Vos cases à cocher sont en E. Vous pourriez utiliser une formule telle que :
 

Code : Tout sélectionner

=ARRAYFORMULA(IF(ISBLANK(A2:A), "", VLOOKUP(A2:A, PlageDeDonnéesImportées, NuméroDeColonneCorrespondante, FALSE))) 
Cette formule vérifie si l'ID est présent, puis recherche cet ID dans la plage de données importées pour retourner la valeur correspondante. Vous devrez adapter

Code : Tout sélectionner

PlageDeDonnéesImportées
et

Code : Tout sélectionner

NuméroDeColonneCorrespondante
à votre cas d'usage.ConclusionCes solutions devraient vous aider à gérer les cases à cocher dynamiquement et à maintenir vos données synchronisées malgré les modifications de la structure de vos données sources. Pour une mise en œuvre spécifique, il pourrait être nécessaire d'ajuster les scripts et les formules en fonction des détails précis de votre projet.
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