Casse tête Excel

Démarré par sdm, Octobre 25, 2017, 09:20:15

« précédent - suivant »

sdm

Je sais que ça n'a rien à voir avec la photo, mais il y a peut-être quelqu'un qui pourrait m'aider pour une problème que j'ai sous Excel. La solution est sans doute simple, mais je vois bien que je suis une brèle...

J'ai un tableau qui compte environ 12000 lignes et je dois en supprimer 2 lignes toutes les 7 lignes sans le déclasser. Je ne pense pas pouvoir utiliser le tri auto car il n'y a aucun indice répétitif dans ces lignes. Vous feriez comment pour faire ca vite et bien ?


UnPeuPenche

C'est marrant de venir chercher ici un conseil excel. ;)

1/ tu fais une copie de ton fichier

2/ tu ajoutes 2 colonnes
 a/ la 1re qui incrémente de 1 à nb maxi de ligne
 b/ la 2e qui "tague" tes lignes à supprimer

3/ tu tris ton tableau en fonction de ta 2e colonne ajoutée

4/ tu supprimes d'un bloc toutes tes lignes taguées

5/ tu tris ton tableau en fonction de ta 1re colonne ajoutée

6/ tu supprimes les 2 colonnes ajoutées

7/ tu vérifies que tu ne t'es pas loupé (tu as la sauvegarde, au cas où)

sdm

C'est le seul forum que j'utilise où il y a des experts micro  ;)

Je n'ai pas compris ton 2/
Tu veux dire que je dois taguer moi même chacune des lignes à supprimer?  J'ai plus de 8000 lignes et je dois effacer 2 lignes toutes les 7 lignes. A la main, je n'ai pas fini. C'est pourquoi je cherchjais une astuce ou un script qui m'enlève automatiquement (ou très vite) 2 lignes sur 7 (en plus je devrai faire ca assez souvent sur d'autres fichiers similaires

(Ce sont des relevés automatiques de capteurs. Ils sont à la queue leuleue mais je dois faire sauter 2 lignes toutes les 7 lignes)

sebs

Pour tagguer les lignes à supprimer, il y a problablement une fonction utilisable (modulo mathématique en utilisant le n° de ligne courante).
Moi je n'ai pas Excel mais openoffice, alors je ne peux pas regarder pour te dire  ;D

Franciscus Corvinus

Citation de: sdm le Octobre 25, 2017, 10:07:44
C'est le seul forum que j'utilise où il y a des experts micro  ;)

Je n'ai pas compris ton 2/
Tu veux dire que je dois taguer moi même chacune des lignes à supprimer?  J'ai plus de 8000 lignes et je dois effacer 2 lignes toutes les 7 lignes. A la main, je n'ai pas fini. C'est pourquoi je cherchjais une astuce ou un script qui m'enlève automatiquement (ou très vite) 2 lignes sur 7 (en plus je devrai faire ca assez souvent sur d'autres fichiers similaires

(Ce sont des relevés automatiques de capteurs. Ils sont à la queue leuleue mais je dois faire sauter 2 lignes toutes les 7 lignes)
Dans la premiere colonne sur fais simplement une série.
Dans la deuxieme colonne tu fais une formule "=MOD(ROW(A11),7)>4" que tu copies de haut en bas. A11 est une référence sur la meme ligne (n'importe quelle cellule). Tu peux avoir besoin d'ajouter une constante a ROW(A<x>) pour ajuster si ton tableau ne commence pas exactement sur le premier rang.

Ensuite, tu mets un filtre pour n'avoir que les lignes ou cette colonne est "VRAI". Tu sélectionnes tout et enleves les lignes.

baséli

Citation de: sdm le Octobre 25, 2017, 10:07:44
C'est le seul forum que j'utilise où il y a des experts micro  ;)

Je n'ai pas compris ton 2/
Tu veux dire que je dois taguer moi même chacune des lignes à supprimer?  J'ai plus de 8000 lignes et je dois effacer 2 lignes toutes les 7 lignes. A la main, je n'ai pas fini. C'est pourquoi je cherchjais une astuce ou un script qui m'enlève automatiquement (ou très vite) 2 lignes sur 7 (en plus je devrai faire ca assez souvent sur d'autres fichiers similaires

(Ce sont des relevés automatiques de capteurs. Ils sont à la queue leuleue mais je dois faire sauter 2 lignes toutes les 7 lignes)

Nous sommes tous d'accord:
Tu crées une première colonne dans laquelle tu mets un numéro de ligne
Tu crées une deuxième colonne dans laquelle tu mets la formule qui donne le numéro de ligne modulo 6
Tu crées une troisième colonne qui donne le numéro de ligne modulo 7
Tu filtres la deuxième colonne sur les valeurs zéro  et tu supprimes les lignes qui s'affichent
Tu filtres la troisième colonne sur les valeurs zéro et tu supprimes les lignes qui s'affichent
Tu supprimes les trois colonnes que tu viens de créer
Tu va boire en café pendant le temps gagné sur l'opération complètement manuelle. Et là c'est de l'art: tu t'es fait suer à gagner du temps pour avoir le temps de le perdre. Tu saisis le concept? 😁

UnPeuPenche

L'intérêt de trier en bloc les lignes à supprimer c'est que supprimer des lignes imbriquées, c'est très long.
Donc
1/ tri sur les OK/Pas_OK,
2/ suppression des Pas_OK, d'un coup
3/ tri sur le numéro incrémenté pour retrouver l'ordre initial

Après il est possible d'automatiser en faisant faire par une macro. Mais en pratique, la macro fera le travail (sera organisée) de la même manière (si on veut que ça aille vite).

vulpes

Impossible photographe....

sdm

Citation de: vulpes le Octobre 25, 2017, 15:58:01
à adapter :

http://www.webtolosa.com/2013/03/07/excel-comment-supprimer-une-ligne-sur-2-ou-3-ou-x/
Merci merci merci merci -  Ce tuto là est absolument génial !  Super, ça marche !
Je viens de gagner de longues heures. Merci merci !

sdm

Citation de: UnPeuPenche le Octobre 25, 2017, 09:31:11
C'est marrant de venir chercher ici un conseil excel. ;)



Eh bien vu le résultat, ça se pourrait bien que je recommence !

Chassimages.com meilleur que tous les forums micro, solutions multiples dont une géniale et tout ca sans se faire traiter de nul (ce que j'aurais pourtant mérité).

Merci !

sdm


Dans le même style, comment fait-on quand on a fait un tableau dans le mauvais sens, pour le basculer de 90° ?
(Permutation pour que les colonnes deviennent des lignes et les lignes des rangées)

Par exemple

   PAUL  111 222 333
   JEAN  444 555 666
   ELIE   777 888 999

devenant

  PAUL JEAN ELIE
   111   444  777
   222   555  888
   333   666  999
   
:-* :-*

jpmarchand

Citation de: sdm le Octobre 25, 2017, 16:53:41
Dans le même style, comment fait-on quand on a fait un tableau dans le mauvais sens, pour le basculer de 90° ?
(Permutation pour que les colonnes deviennent des lignes et les lignes des rangées)
Par exemple

  PAUL  111 222 333
  JEAN  444 555 666
  ELIE   777 888 999

devenant

 PAUL JEAN ELIE
  111   444  777
  222   555  888
  333   666  999
   
:-* :-*


...à la main, c'est facile (Copier/Collage spécial-transposé)
Mais  de façon automatique sans avoir à faire de copier/coller-supprimer ligne (avec une macro) et sans avoir à ouvrir Excel ? (script ?)  ;D ;D ;D

vulpes

Citation de: sdm le Octobre 25, 2017, 16:53:41
Dans le même style, comment fait-on quand on a fait un tableau dans le mauvais sens, pour le basculer de 90° ?
(Permutation pour que les colonnes deviennent des lignes et les lignes des rangées)

Par exemple

   PAUL  111 222 333
   JEAN  444 555 666
   ELIE   777 888 999

devenant

  PAUL JEAN ELIE
   111   444  777
   222   555  888
   333   666  999
   
:-* :-*


https://www.pcastuces.com/pratique/astuces/2757.htm
Impossible photographe....

Franciscus Corvinus

Si tu as Excel 2010 ou 2013, tu peux downloader Power Query. Si tu as Excel 2016, c'est inclus dedans.

Power Query sait éliminer des lignes périodiques. D'abord tu lui fais éiminer toutes les 7 lignes, puis toutes les 6 lignes. Il sait aussi (pour sdm) transposer des matrices, bien que ca ne soit pas tres difficile avec les formules Excel traditionnelles (voir "dynamic named range").

Cela permet d'automatiser le traitement tres facilement.

giraffe

Citation de: baséli le Octobre 25, 2017, 12:59:00
Nous sommes tous d'accord:
Tu crées une première colonne dans laquelle tu mets un numéro de ligne
Tu crées une deuxième colonne dans laquelle tu mets la formule qui donne le numéro de ligne modulo 6
Tu crées une troisième colonne qui donne le numéro de ligne modulo 7
Tu filtres la deuxième colonne sur les valeurs zéro  et tu supprimes les lignes qui s'affichent
Tu filtres la troisième colonne sur les valeurs zéro et tu supprimes les lignes qui s'affichent
Tu supprimes les trois colonnes que tu viens de créer
Tu va boire en café pendant le temps gagné sur l'opération complètement manuelle. Et là c'est de l'art: tu t'es fait suer à gagner du temps pour avoir le temps de le perdre. Tu saisis le concept? 😁

J'ai déjà rencontré ce genre de problème en récupérant de longues tables sur des sites internet (beaucoup de lignes qui séparent les données utiles)
Je traite comme suit (une petite variante de cette méthode, toujours pour éliminer deux lignes sur sept)
  - Insertion de deux colonnes
  - Dans la première : création d'une série de 1 à n (n = nombre total de lignes à filtrer)
  - Dans la seconde : une petite formule "=SI(MOD(LC(1);7)<5;1;0)" (LC(1) contient la série 1 à n)
  - Tri croissant de la table par la seconde colonne (toutes les valeurs à zéro sont en haut du tableau)
Je suis de l'avis de boire un café après !

marco56

Perso, je ferai toutes les opérations avec python mais comme tu ne maîtrises pas trop excel, j'imagine que la programmation n'est pas ton fort non plus...