Filtre, tableaux, tri

Y compris Power BI, Power Query et toute autre question en lien avec Excel
S
Supreme
Jeune membre
Jeune membre
Messages : 31
Inscrit le : 22 juillet 2017
Version d'Excel : FR 2013

Message par Supreme » 28 juillet 2017, 21:54

Bonjour le forum :D

J'aimerais créer une macro qui me permettrait de, à partir d'une extraction (fichier Excel "Liste d'intervention") :
- ne garder que les tickets qui ont comme type : incident
- puis supprimer les colonnes "Description", "Commentaires"
- puis faire un tri selon la colonne Priorité : Au dessus, les P1 puis les P2 puis P3 puis P4
- faire en sorte que toutes les cellules du tableau soit en blanc
- copier le tableau obtenu sur un autre fichier "Classeur1" onglet "tableau incident" à partir de la cellule A3 dans lequel j'ai enregistré la macro
For Each wb In Workbooks
        If wb.Name Like "Liste_interventions" Then
Classeur1.xlsm
(15.85 Kio) Téléchargé 20 fois
Liste_interventions.xlsx
(9.35 Kio) Téléchargé 27 fois
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'685
Appréciations reçues : 343
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 29 juillet 2017, 05:41

Bonjour

Un essai à tester. Te convient-il ?
Bye !
Desktop.zip
(32.01 Kio) Téléchargé 115 fois
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'656
Appréciations reçues : 251
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 29 juillet 2017, 09:15

bonjour

salut gmb

et si on faisait de l'informatique de gestion de données ?
pas de recopie (ça date de l'époque des crayons et du papier)

un onglet avec TOUTES les lignes. On saisit les infos dans cet onglet

quand on veut visualiser une partie de cet onglet, on fait un TCD dans un autre onglet (c'est un super-filtre, sans prise de tête)

on n'efface JAMAIS rien dans l'onglet de saisie.
il va te durer des années.
Et tu pourras faire d'autres TCD pour en extraire des statistiques d'intervention. Et même en € si tu as pensé à ajouter les heures et les achats dans l'onglet de saisie.

aucune formule, pas de VBA, un seul fichier !
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
S
Supreme
Jeune membre
Jeune membre
Messages : 31
Inscrit le : 22 juillet 2017
Version d'Excel : FR 2013

Message par Supreme » 29 juillet 2017, 15:42

Mais en fait je ne peux pas travailler sur le fichier Liste_interventions : c'est un fichier que je télécharge tous les jours qui provient d'une application. Ce fichier contient un tableau. Ce que je dois avec ce tableau, c'est ne garder que les incidents, trier selon la priorité, garder un fond blanc et également les bordures, puis remplir manuellement des informations qui manqueraient.
Comme le tri et le filtrage demande de nombreux clics, j'aimerais créer une macro qui me réalise cela sur le fichier Classeur1. Je pourrais ensuite remplir les informations manquantes manuellement et copier le tableau pour une autre utilité

Le résultat me convient parfaitement !! Il me manquait seulement de trier par priorité en commençant au dessus par les P1 puis P2 jusqu'à P4 et également à mettre les bordures

Merci !!
Pourrais tu mettre un commentaire pour chaque ligne du code ? J'aimerais comprendre le fonctionnement pour pouvoir le reproduire dans l'avenir ^^
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'685
Appréciations reçues : 343
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 29 juillet 2017, 17:09

Nouvelle version.
Bye !
Classeur1 v2.xlsm
(26.4 Kio) Téléchargé 41 fois
S
Supreme
Jeune membre
Jeune membre
Messages : 31
Inscrit le : 22 juillet 2017
Version d'Excel : FR 2013

Message par Supreme » 30 juillet 2017, 15:40

Mercri !
ReDim Preserve tabloR(1 To 7, 1 To 1)
Je ne comprend pas, c'est un tableau à 7 lignes ?
Ah je n'avais pas vu la transposition à la fin
S
Supreme
Jeune membre
Jeune membre
Messages : 31
Inscrit le : 22 juillet 2017
Version d'Excel : FR 2013

Message par Supreme » 30 juillet 2017, 16:28

Rebonjour !

En fait je ne comprend la boucle sur j
ReDim Preserve tabloR(1 To 7, 1 To 1)                   'On définit la variable tableau qui va recevoir les résultats
    For j = 1 To 9
        If j <> 4 And j <> 8 Then
            ReDim Preserve tabloR(1 To 7, 1 To 2)
            For col = 1 To 7
                j = Choose(col, 1, 2, 3, 5, 6, 7, 9)        'Pour faire correspondre les colonnes des 2 tableaux
                jr = Choose(col, 1, 2, 3, 4, 5, 6, 7)
                tabloR(jr, 1) = tablo(1, j)                 'on remplit les titres du tableau résultat
            Next col
            k = k + 1
            
        End If
    Next j
A la première itération de j=1, les titres du tableau resultat sont deja remplis non?
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'685
Appréciations reçues : 343
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 30 juillet 2017, 19:30

Bonjour

Non, pas tout à fait.
Dans cette boucle, on met les 7 titres du tableau de données qu’on a sur le fichier ‘’Liste_interventions.xlsx’’ sur la première colonne
des 7 lignes de la variable tabloR.
On est en effet obligé de travailler avec cette variable avec un tableau transposé : les lignes sont les colonnes du tableau résultat final et les colonnes sont les lignes.
Tout ça parce qu’on ne sait augmenter que la deuxième dimension d’une variable tableau à 2 dimensions.
On passe donc toutes les valeurs des 7 valeurs de col prises succesivement dans les fonctions Choose(col,,,,,) pour prendre les titres dans la variable tablo et les mettre dans les lignes de la première colonne de tabloR

OK ?
Bye !
S
Supreme
Jeune membre
Jeune membre
Messages : 31
Inscrit le : 22 juillet 2017
Version d'Excel : FR 2013

Message par Supreme » 30 juillet 2017, 19:44

Bonjour,

Alors j'ai essayé de comprendre l'algo sur papier

Mais à l'itération j=1, on entre ensuite dans la boucle col=1 à col=7 et à l'issue de cette boucle, la 1ere colonne de TabloR est deja remplie avec tous les titres
Du coup, je ne comprenais pas la boucle sur j

Ou peut etre j'ai fait une erreur ..

Et pourquoi incrémenter k de 1 dans la 1ere partie de l'algorithme
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'685
Appréciations reçues : 343
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 30 juillet 2017, 21:01

Tu as raison, la première boucle avec J= 1 à 9 est inutile. Si tu fais tourner la macro pas à pas tu verras d'ailleurs qu'elle n'est effectuée qu'une seule fois.
Tu peux donc la suprimer avec son Next J correspondant.

Bye !
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message