Filtre, tableaux, tri

Bonjour le forum

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
20classeur1.xlsm (15.85 Ko)

Bonjour

Un essai à tester. Te convient-il ?

Bye !

115desktop.zip (32.01 Ko)

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)

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 !

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 ^^

Nouvelle version.

Bye !

41classeur1-v2.xlsm (26.40 Ko)

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

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?

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 !

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

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 !

Merci !

Et oui juste une dernière question : A quoi correspond le G4 dans

 Range("A3:G" & UBound(tabloR, 2) + 1).Sort key1:=Range("G4"), order1:=xlAscending, Header:=xlYes  

Bonjour

Supreme a écrit :

A quoi correspond le G4 dans

A la première cellule des données de la colonne par rapport à laquelle on veut trier.

Bye !

C'est compris ! Merci !

Et une derniere question sur la derniere boucle : Si on veut adapter cet algo à un tableau non plus de 7 colonnes mais de 5 colonnes et qu'on veut que chacunes des cellules aient une bordure

    For i = 7 To 12                                                      'On encadre
        Range("A3:G" & UBound(tabloR, 2) + 1).Borders(i).Weight = xlThin   'le tableau
    Next i 

J'ai modifé le 7 par un 5 mais ca ne me semble pas être ca la solution ^^

Alors tu remplaces :

Range("A3:G" & UBound(tabloR, 2) + 1).Borders(i).Weight = xlThin 

par

Range("A3:E" & UBound(tabloR, 2) + 1).Borders(i).Weight = xlThin 

Bye !

Ah d'accord ! Mon erreur est que je voulais changer la case A3 par A5 !

Mais du coup, si je voulais changer A3 par A5, il faut alors changer la boucle ?

Bonjour

Supreme a écrit :

Mais du coup, si je voulais changer A3 par A5, il faut alors changer la boucle ?

Pourquoi ? Pas du tout....La boucle reste la même, in n'y a que la plage qui change.

Bye !

Ah, alors peut etre c'est une erreur de ma part !

Rechercher des sujets similaires à "filtre tableaux tri"