[Résolu] Suppression ligne et passage ligne suivante

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur: Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.

[Résolu] Suppression ligne et passage ligne suivante

Messagepar Tanguy5638 » 21 Juin 2021 16:23

Bonjour,

J"essais depuis un certains temps mais je n'arrive pas a supprimer des ligne "fausse" pour creer des liste uniquement avec la condition "vrai"

J'ai une liste d'élèves de l'école, je souhaite créer des onglets par classe. Pour cela, j'ai créé un onglet et rentré la formule
Code : Tout sélectionner   AgrandirRéduire
=SI(INDEX('Liste Inscriptions'.$D$2:$D$498)="CM2 A";'Liste Inscriptions'.C6:C502;"")
afin de n'avoir que les élèves de CM2 A dans mon exemple. Mais je n'arrive pas a supprimer les ligne qui n'ont pas la condition CM2 A.

Merci de m'aider et d'expliquer le fonctionnement de la formule si possible (afin de comprendre la logique)

La modération vous a écrit: Formule balisée pour faciliter la lecture

Dernière édition par Tanguy5638 le 24 Juin 2021 14:13, édité 2 fois.
Open Office 4.1.5 sur Windows 10 Pro 64Bit
Tanguy5638
Fraîchement OOthentifié
 
Message(s) : 4
Inscrit le : 21 Juin 2021 15:57

Re: Suppression ligne et passage ligne suivante

Messagepar Jean-Louis Cadeillan » 21 Juin 2021 17:11

Bonjour et bienvenue,
Tanguy5638 a écrit:Merci de m'aider et d'expliquer le fonctionnement de la formule si possible (afin de comprendre la logique)
INDEX() est une fonction qui récupère certaines valeurs (argument 2) d'une liste (argument 1), dans le cas où la plage est constituée d'une seule colonne, ce qui est le cas ici. Or tu l'utilises sans argument 2. Cela suppose que tu l'utilises de manière matricielle (validation par Maj+Ctrl+Entrée) et dans ce cas INDEX() te retourne une colonne de toutes les valeurs.
Donc ici INDEX ne sert à rien. Si tu avais mis (toujours en matriciel) :
Code : Tout sélectionner   AgrandirRéduire
=SI('Liste Inscriptions'.$D$2:$D$498="CM2 A";'Liste Inscriptions'.C6:C502;"")
cela donnerait le même résultat…
Autre remarque : le décalage de plage m'interroge : la classe de l'élève en C6 se trouve en D2, celle de l'élève en C7 se trouve en D3… ??
Tanguy5638 a écrit:je n'arrive pas à supprimer les lignes qui n'ont pas la condition CM2 A.
Si on reste dans ta logique (il serait peut-être plus simple d'utiliser un autofiltre…), on pourrait dans un premier temps repérer les lignes qui concernent des élèves en CM2 A (l'avantage de repérer les lignes, c'est que ce sont des valeurs numériques) valeurs qu'on peut remonter dans la liste avec la fonction PETITE.VALEUR()), et ensuite, seulement ensuite, aller rechercher le nom de l'élève correspondant à cette ligne avec la fonction INDEX().
Tout ça pour dire qu'un classeur joint anonymisé faciliterait de beaucoup la réponse en appliquant la démarche sur un exemple réel. En l'attendant…
Cordialement,
Jean-Louis
LibO 7.0.6.2 (x64 avec Java 1.8.0_301) et AOO 4.1.10 (avec Java x32 1.8.0_241), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
 
Message(s) : 5210
Inscrit le : 03 Jan 2009 00:56

Re: Suppression ligne et passage ligne suivante

Messagepar micmac » 21 Juin 2021 17:16

Bonjour et bienvenue,
Dans votre signature il y a écrit:Open Office 4.1.5
Version de OpenOffice qui est déclarée obsolète depuis longtemps.
Il est fortement recommandé d'être à jour de la dernière version

Accès direct à votre signature pour la corriger.

Dépersonnalisez votre document (Comment dépersonnaliser un document) et joignez-le à votre prochain message Comment joindre un fichier afin que les personnes qui vous aideront puissent appréhender au mieux le problème.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 7556
Inscrit le : 28 Août 2010 09:45

Re: Suppression ligne et passage ligne suivante

Messagepar Tanguy5638 » 22 Juin 2021 13:09

Bonjour,

Merci pour ta réponse Jean Louis, Après test de ta formule sans INDEX et correction du décalage, je retombe sur mes pattes effectivement! Par contre, si je vois la possibilité de faire une formule par ligne en passant par l'autofiltre, (environs 250 eleves répartis sur 13 classes... :'{ ) je ne connait pas (et donc ne comprend pas du peu que j'en ai lu) l'interêt/fonctionnement de PETITE VALEUR.

Pour info, en cours d'année les attributions peuvent changer (passer de rien a Péri ou de AS a AIDE) l'idée entant de ne changer que sur la liste principale...

Merci MicMac pour l'info sur la version OLD SCHOOL de mon OO et pour l'anonymisation!

Je joins un fichier anonymisé avec 2 onglet pour la forme.

Merci encore pour les conseils et explications.
Pièces jointes
Modèle Test Anonyme.ods
(62.77 Kio) Téléchargé 4 fois
Open Office 4.1.5 sur Windows 10 Pro 64Bit
Tanguy5638
Fraîchement OOthentifié
 
Message(s) : 4
Inscrit le : 21 Juin 2021 15:57

Re: Suppression ligne et passage ligne suivante

Messagepar yclik » 22 Juin 2021 14:25

Bonjour
Dans ce classeur un exemple feuille CP1 A de l'utilsation des fonctions PETITE.VALEUR, EQUIV INDEX
tanguy.ods
(72.08 Kio) Téléchargé 2 fois
OpenOffice 4.1.7 sous Windows 10
Avatar de l’utilisateur
yclik
SuppOOrter
SuppOOrter
 
Message(s) : 1301
Inscrit le : 15 Déc 2010 09:33

Re: Suppression ligne et passage ligne suivante

Messagepar Tanguy5638 » 22 Juin 2021 14:47

Merci pour l'exemple, mais du coup je ne comprend pas comment cela fonctionne et comment créer de nouveau onglets (pour chaque classe)

En effet, avant, il me suffisait de modifier la condition "CPA 1" ou "CM2 A" pour modifier la selection des enfant dans mes liste...Comment je fait désormais avec cette formule?
Open Office 4.1.5 sur Windows 10 Pro 64Bit
Tanguy5638
Fraîchement OOthentifié
 
Message(s) : 4
Inscrit le : 21 Juin 2021 15:57

Re: Suppression ligne et passage ligne suivante

Messagepar yclik » 22 Juin 2021 16:21

Re
Une autre piste en mettant dans une liste de validité le nom de la classe sur une seule feuille (éviterait de "grossir" le classeur)
tanguy2.ods
(61.77 Kio) Téléchargé 3 fois


Formule utilisée
Code : Tout sélectionner   AgrandirRéduire
=SI(ESTERREUR(PETITE.VALEUR('Liste Inscriptions'.$R$1:$R$498;LIGNE()-1));"";INDEX('Liste Inscriptions'.$C$1:$P$498;EQUIV(PETITE.VALEUR('Liste Inscriptions'.$R$1:$R$498;LIGNE()-1);'Liste Inscriptions'.$R$1:$R$498;0);1))


avec EQUIV(PETITE.VALEUR('Liste Inscriptions'.$R$1:$R$498;LIGNE()-1);'Liste Inscriptions'.$R$1:$R$498;0);1))

Liste Inscriptions'.$R$1:$R$498;0);1) plage de recherche
PETITE.VALEUR('Liste Inscriptions'.$R$1:$R$498;LIGNE()-1) permet de visualiser la n ième plus petite valeur de la colonne $R$1:$R$498
EQUIV donne la ligne correspondante dans plage de recherche

INDEX donne la valeur à renvoyer avec la ligne issue de EQUIV et la colonne saisie comme argument (N°de la colonne correspondante à renvoyer)

SI(ESTERREUR(PETITE.VALEUR('Liste Inscriptions'.$R$1:$R$498;LIGNE()-1))
permet d'éviter l’affichage d'erreur si pas de correspondance trouvée
OpenOffice 4.1.7 sous Windows 10
Avatar de l’utilisateur
yclik
SuppOOrter
SuppOOrter
 
Message(s) : 1301
Inscrit le : 15 Déc 2010 09:33

Re: Suppression ligne et passage ligne suivante

Messagepar Jean-Louis Cadeillan » 23 Juin 2021 14:37

Bonjour,
Une solution ci-jointe qui permet, seulement en changeant le nom de l'onglet (le nom de la classe) de changer le contenu de la feuille. Le nom de l'onglet est récupéré par la fonction CELLULE() :
Code : Tout sélectionner   AgrandirRéduire
STXT(CELLULE("nomfichier");TROUVE("$";CELLULE("nomfichier"))+1;20)&T(ALEA())
T(ALEA()) sert uniquement à forcer la mise à jour de la formule quand on change le nom de l'onglet. Cette formule est nommée Classe (voir Insertion > Nom > Définir).
Dans l'exemple joint, j'ai créé une feuille Modele; il suffit de copier cette feuille et de changer son nom en nom de classe, pour que les élèves de cette classe apparaissent dans la feuille ainsi que toutes les informations liées. Bien sûr cette feuille n'est pas indispensable, on peut copier une feuille de classe existante et changer son nom.
En B2 d'une feuille de classe se trouve la formule matricielle (à valider par Ctrl+Maj+Entrée) :
Code : Tout sélectionner   AgrandirRéduire
=SI(ESTERR(PETITE.VALEUR(SI(ListeClasse=Classe;LIGNE(ListeNP);"");LIGNE(A1)));"";INDEX(ListeNP;PETITE.VALEUR(SI(ListeClasse=Classe;LIGNE(ListeNP);"");LIGNE(A1))-1))
ListeClasse est le nom de la plage $'Liste Inscriptions'.$D$2:$D$498.
ListeNP est le nom de la plage $'Liste Inscriptions'.$C$2:$C$498
Nommer des plages peut faciliter la relecture et la maintenance des formules.
Petit rappel :
Pour recopier une formule matricielle vers le bas :
  • il suffit de positionner la souris dans le coin inférieur droit de la cellule : le curseur se transforme en croix (+), puis, il faut cliquer/glisser vers le bas (ou vers la droite) tout en appuyant simultanément sur la touche Ctrl ;
  • une autre manière de faire est de copier la cellule initiale (Ctrl+C), puis de sélectionner la plage des cellules qui doivent contenir la même formule, puis de coller (Ctrl+V).
Les autres données des feuilles par classe sont récupérées grâce à la fonction RECHERCHEV() (ici en D2) :
Code : Tout sélectionner   AgrandirRéduire
=SI(ESTNA(RECHERCHEV($B2;Base;3;0));"";RECHERCHEV($B2;Base;3;0))
Base est le nom de la plage $'Liste Inscriptions'.$C$2:$Q$498
Remarque : visiblement le fichier provient d'une version Excel dont beaucoup de plages nommées sont inutilisables : il faudrait faire du nettoyage !
Attention, tu avais nommé les onglets de classe approximativement «CP B» au lieu de «CP1 B», «CM2 A» avec deux espace entre 2 et A… il faut plus de rigueur, sinon la reconnaissance du nom de classe ne sera pas faite, bien sûr.
Sur la feuille Liste Inscriptions, j'ai mis une formule de validité sur la colonne de Classe :
Code : Tout sélectionner   AgrandirRéduire
$'Liste Inscriptions'.$D$2:$D$498
tout en permettant la saisie de nouveaux noms de classe : si la classe est déjà présente plus haut, elle est aussi présente dans la liste déroulante, sinon, on a la possibilité d'en saisir une nouvelle, qui sera aussitôt incorporée à la prochaine liste déroulante.
Tout cela est à tester…
Cordialement,
Jean-Louis
Pièces jointes
Tanguy5638_20210621_JLC01.ods
(70.12 Kio) Téléchargé 2 fois
LibO 7.0.6.2 (x64 avec Java 1.8.0_301) et AOO 4.1.10 (avec Java x32 1.8.0_241), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
 
Message(s) : 5210
Inscrit le : 03 Jan 2009 00:56

Re: Suppression ligne et passage ligne suivante

Messagepar Tanguy5638 » 24 Juin 2021 13:17

Bonjour, Merci à tous de vos réponse et explications! La formule avec petite valeur fonctionne bien et limite effectivement le nombre d'onglet (puisqu'il suffit désormais de modifier le nom de classe dans la cellule en bas pour obtenir le liste)

J'ai put explorer un peu la formule et même si je n'ai pas tout compris, j'ai l'idée principale et les éléments pour adapter la formule au besoin.

Merci encore, je passe le sujet en résolus! :bravo:
Open Office 4.1.5 sur Windows 10 Pro 64Bit
Tanguy5638
Fraîchement OOthentifié
 
Message(s) : 4
Inscrit le : 21 Juin 2021 15:57


Retour vers Tableur

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Google [Bot] et 5 invité(s)