Report de cellules en ligne d'une feuille à une autre feuille en fonction de couleur

Chri8Ed

XLDnaute Occasionnel
Bonjour à tous

J’ai un tableau de 500 lignes.

Je souhaiterais en fonction de la couleur des cellules dans la colonne E
Que le contenu des lignes de la feuille « Tableau » (Uniquement des colonnes de B à I)
Se reporte dans la feuille « Code F ».

Il ne serait pas très difficile avec des formules de pouvoir obtenir cela
Mais je souhaite que dans cette feuille les données extraites se placent dans l’ordre chronologique des dates affichées dans la colonne B.

Je précise au cas où cela serait important :
Le tableau de données est toujours trié par ordre de date
Comme les données ne sont pas toujours saisies dans l'ordre
Je procède régulièrement à un tri pour le mettre dans l'ordre.

De ce fait, je pense que seule un macro pourrait me permettre d’y arriver
Peut-être que quelqu’un sur le Forum à déjà réaliser ce genre de traitement ?

Pour une meilleure compréhension un petit tableau imaginatif qui reprend la même structure de mon tableau.

(Je précise aussi que toutes les cellules de la colonne B portant une même couleur commencent aussi par la même lettre, exemple toutes les cellules vertes commencent par la lettre F)

Merci d'avance
 

Pièces jointes

  • Tableau Exemple.xlsm
    17 KB · Affichages: 39
  • Tableau Exemple.xlsm
    17 KB · Affichages: 39

Modeste

XLDnaute Barbatruc
Re : Report de cellules en ligne d'une feuille à une autre feuille en fonction de cou

Bonsoir Chris8Ed,

J'ai un peu de mal à comprendre ces trois assertions:
Le tableau de données est toujours trié par ordre de date
Comme les données ne sont pas toujours saisies dans l'ordre
Je procède régulièrement à un tri pour le mettre dans l'ordre.
... En fin de compte, les données sont triées ... ou elles ne le sont pas?

À quelle fréquence le tableau de départ est-il mis à jour (une fois par mois ... ou toutes les 10 minutes)?
500 lignes, c'est l'état actuel, mais ce nombre est amené à varier? Si oui, dans quelle proportion?
Tu évoques les cellules vertes/code commençant par 'F' ... qu'en est-il des autres?

Si la couleur est déterminée par le premier caractère du code rien n'empêche donc d'utiliser un filtre avancé avec une formule en guise de critère, puis de faire un tri? La question est donc Pourquoi une macro?
 

Chri8Ed

XLDnaute Occasionnel
Re : Report de cellules en ligne d'une feuille à une autre feuille en fonction de cou

Bonsoir Modeste

Voici les précisions demandées :

J'ai un peu de mal à comprendre ces trois assertions:
Le tableau de données est toujours trié par ordre de date
Comme les données ne sont pas toujours saisies dans l'ordre
Je procède régulièrement à un tri pour le mettre dans l'ordre.

Je prends un exemple, je pense que ce sera plus clair
La dernière entrée du tableau est du 25/08/15
Je suis obligé de rentrer une ligne dont la date est du 10/08/2015
Cette date est donc antérieure
Après la saisie je dois donc procéder à un tri pour remettre mon tableau par ordre chronologique de date.
Mon tableau doit toujours être dans cet ordre chronologique.

À quelle fréquence le tableau de départ est-il mis à jour (une fois par mois ... ou toutes les 10 minutes)?
4 ou 5 fois par semaine.

500 lignes, c'est l'état actuel, mais ce nombre est amené à varier? Si oui, dans quelle proportion?
500 lignes cela suffit pour une année, Ce tableau est constitué par année civile.
Il est peu probable que ce nombre de lignes devienne insuffisant
Pour le moment en tout cas.

Tu évoques les cellules vertes/code commençant par 'F' ... qu'en est-il des autres?
Pour le moment je n'ai pas besoin de faire de report pour les autres codes
Mais je suppose que si une solution est trouvée pour ce code, rien n’empêchera de l'appliquer pour un autre code dans une autre feuille.

La question est donc Pourquoi une macro
Comme la feuille "Relevé" est triée constamment et que l'on trie également la feuille "Code F" de manière à ce que les lignes se suivent sans lignes vides, les formules vont inévitablement se mélanger dans le temps.
Il peut arriver aussi que des lignes soient supprimées dans la feuille "Relevé"

En espérant avoir assez précis
A+
 

Modeste

XLDnaute Barbatruc
Re : Report de cellules en ligne d'une feuille à une autre feuille en fonction de cou

Bonsoir,

Pas certain que les tenants et aboutissants soient simplement extraire certaines lignes à un moment T :confused:

Avec ce que j'ai compris (et comme tu n'infirmais ni ne confirmais ma proposition de filtre avancé), une proposition en pièce jointe.
La macro est déclenchée à chaque activation de la feuille Code F. Au stade actuel, le résultat affiché en Code F est le résultat d'un filtre cherchant "A" comme premier caractère en colonne E de la base.
La zone de critères est en L1:L2 (en L2, la formule est =GAUCHE(Relevé!E4)="F"). Activer la feuille Relevé, puis revenir sur Code F pour voir le résultat. Les titres des colonnes doivent être identiques pour les deux tableaux!

Pas fait de tri, puisque tu le fais régulièrement :)
 

Pièces jointes

  • Filtre par macro (Chris8Ed).xlsm
    21.3 KB · Affichages: 41

Chri8Ed

XLDnaute Occasionnel
Re : Report de cellules en ligne d'une feuille à une autre feuille en fonction de cou

Bonjour

Pas certain que les tenants et aboutissants soient simplement extraire certaines lignes à un moment T
J'avoue ne pas saisir cette phrase ???

Merci pour cette solution qui répond très bien à ce que je voulais.

Il me manquait la colonne A (Supprimée dans cette solution)
Ainsi que la Mise en Tableau
J'ai donc adapté cette solution à cette fin
Et après modification de la macro et de la formule
Tout fonctionne à merveille

J'ai essayé donc de l'insérer dès hier soir dans mon tableau d'origine
et encore ce matin, mais là, ça plante
Message d'erreur 1104
Nom de champs introuvable ou incorrect dans la plage d'extraction


J'ai nommé les zones Extraire et Criteres
Bien que je ne vois par leurs utilisations dans la macro, ni dans la formule.
J'ai d’ailleurs remarqué que en les supprimant dans cette solution, elles se recréaient automatiquement ??

Je n'ai jamais utilisé de filtre avancé
J'ai bon cherché, je ne trouve pas le problème
Il y a quelque chose qui m’échappe !

A+
 

Modeste

XLDnaute Barbatruc
Re : Report de cellules en ligne d'une feuille à une autre feuille en fonction de cou

Bonjour Chri8Ed, le forum,

Ce que je voulais dire c'est que je ne sais pas ce que tu comptes faire du contenu de la feuille Code F. S'il s'agit bien d'extraire les données (et puis c'est tout), il ne devrait pas y avoir de souci. Par contre, si ton envie est d'ajouter des colonnes supplémentaires pour y inscrire des données ... là ça ne va plus aller, puisqu'à chaque exécution, la macro efface tout et refait l'extraction par Filtre Avancé!

Pour ce qui est de la colonne A manquante, je me suis inspiré de ce que j'ai cru comprendre ici:
Chri8Ed à dit:
Que le contenu des lignes de la feuille « Tableau » (Uniquement des colonnes de B à I) se reporte dans la feuille « Code F »

Pour ton message d'erreur, as-tu bien tenu compte de ma consigne
Modeste à dit:
Les titres des colonnes doivent être identiques pour les deux tableaux!
 

Chri8Ed

XLDnaute Occasionnel
Re : Report de cellules en ligne d'une feuille à une autre feuille en fonction de cou

Re,

Par contre, si ton envie est d'ajouter des colonnes supplémentaires pour y inscrire des données ... là ça ne va plus aller, puisqu'à chaque exécution, la macro efface tout et refait l'extraction par Filtre Avancé!
Je voulais juste ajouter une colonne de pointage, mais si ce n'est pas possible je ferais autrement.

Que le contenu des lignes de la feuille « Tableau » (Uniquement des colonnes de B à I) se reporte dans la feuille « Code F »
Oui, la colonne A, ne me sert pas de donnée, je m'en sert juste pour la gestion des mois
Il n'y a donc aucun report de donnée dans cette colonne
D’ailleurs elle est cachée dans mon tableau

Les titres des colonnes doivent être identiques pour les deux tableaux!
Oui j'ai bien fait attention à cela
Cela faut plusieurs heures que je cherche, j'ai à peu près tout essayé, mais toujours le même problème

Pour trouver mon erreur
Comme je n'avais jamais encore à ce jour utilisé des filtres élaborés
J'ai parcouru le net, j'ai trouvé 2 tutoriels
J'ai réalisé à partir de mon tableau exemple de nombreux essais
avec ces filtres (mais sans ta formule et sans ta macro)
cela fonctionne parfaitement
Au moins je pense avoir saisi une bonne parti de cette technique
Il me reste à trouver le problème ???

Je continue de chercher
Si tu pense à autre chose ....

PS :
Peux-tu me dire à quoi sert le nom "Extraire" ?
J'ai remarqué que dans ta solution, il est généré automatiquement
Ce qui n'est pas le cas dans mon tableau

A+
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Report de cellules en ligne d'une feuille à une autre feuille en fonction de cou

Bonsoir Chri8Ed,

L'ajout d'une colonne ou l'autre n'a sans doute rien d'impossible, mais cet élément aurait dû figurer dans la demande de départ: ma proposition ne convient pas dans ce contexte (et la solution serait sans aucun doute "un poil" plus complexe ... au point que je n'aurais sans doute même pas ébauché l'amorce du début d'une réponse :rolleyes:). En effet, dans ce cas, il me semble qu'il faudrait comparer le résultat de l'extraction avec les données déjà présentes en feuille Code F, pour -précisément- ne pas effacer les données existantes.
Comme tu évoquais, en plus la possibilité que des lignes soient effacées dans la feuille Relevé, je ne suis pas convaincu que la solution dont tu disais qu'elle convenait parfaitement ... fonctionne tout court :eek:

Pour ce qui est de ton message d'erreur, avec un fichier exemple, pas sûr que le souci serait facile à repérer ... mais alors sans fichier, je n'essaie même pas de réfléchir (surtout si tu me dis que les titres sont identiques dans les 2 zones!?)
On ne sait pas non plus avec quel type de critère ton filtre avancé fonctionne: tu dis "sans ta formule et sans ta macro" ... mais quoi, une autre formule, un critère "en dur", ... :confused:

Quant à la zone "Extraire", c'est un nom généré automatiquement, lors du Filtre Avancé (comme Critères, par exemple) lorsque la liste n'est pas filtrée sur place
 

Chri8Ed

XLDnaute Occasionnel
Re : Report de cellules en ligne d'une feuille à une autre feuille en fonction de cou

Bonsoir

Au sujet de la colonne de pointage
Il est vrai que je n'en au pas parlé
J'ai essayé de ne rien oublier
Mais ne connaissant pas cette pratique de filtre avancé
Il ne m'est pas venu à l'esprit de son importance

Importance toute relative
Car comme je l'ai dit, ce n'est pas important si elle n'existe pas
C'est secondaire

Pour l'erreur, effectivement sans le fichier, c'est impossible à trouver
Ne pouvant pas non plus joindre mon fichier très volumineux
J'ai réalisé un autre fichier exemple
Dans lequel j'ai recopier ta macro, ta formule
et je constate la même erreur
Je le joins
Peut-être pourra tu comprendre le problème ?

A+
 

Pièces jointes

  • Tableau Exemple Essai.xlsm
    17.4 KB · Affichages: 31

Modeste

XLDnaute Barbatruc
Re : Report de cellules en ligne d'une feuille à une autre feuille en fonction de cou

Bonsoir,

Désolé, la journée a été mouvementée et "dense" ... Pas eu l'occasion de répondre plus tôt.

D'autant plus désolé que, dans ton fichier, en feuille Code F ... je ne trouve absolument rien!? Pas de critère en L2 (la fameuse formule) et pas de titres pour les colonnes à "extraire" :confused:

Si tu t'es renseigné au sujet des filtres avancés/élaborés, tu seras d'accord avec moi pour dire que ça ne pourrait en aucun cas fonctionner en l'état actuel!? Donc ... quoi? Tu te serais trompé de fichier?

Pour ne pas "se faire du mal pour rien", tu sais sans doute que tu arriverais au même résultat en activant les filtres automatiques en feuille Relevé, en définissant comme critère en colonne E Commence par ... F, puis en copiant-collant les données visibles de la 1ère feuille vers la seconde?
 

Chri8Ed

XLDnaute Occasionnel
Re : Report de cellules en ligne d'une feuille à une autre feuille en fonction de cou

Bonsoir

Désolé, la journée a été mouvementée et "dense" ... Pas eu l'occasion de répondre plus tôt.
Ce n'est pas grave, il n'y bien sûr aucune obligation de réponse rapide

D'autant plus désolé que, dans ton fichier, en feuille Code F ... je ne trouve absolument rien!? Pas de critère en L2 (la fameuse formule) et pas de titres pour les colonnes à "extraire"

Si tu t'es renseigné au sujet des filtres avancés/élaborés, tu seras d'accord avec moi pour dire que ça ne pourrait en aucun cas fonctionner en l'état actuel!? Donc ... quoi? Tu te serais trompé de fichier?

Je me suis pas trompé, mais c'est la macro qui efface tout depuis la ligne 2
Pour que tu puisse te rendre compte, j'ai déplacer la macro dans une autre feuille
Elle ne sert donc à rien, mais tu pourras voir que la macro est exactement la même que dans ta solution
Les critères sont bien là ainsi que les titres des colonnes

La formule n'est plus en L amis en M du fait que j'ai intégré une colonne A
Je joins aussi ta solution remaniée de la même sorte avec la formule en M
et qui elle fonctionne parfaitement

Je ne vois aucune différence entre ces 2 fichiers
Même disposition, même macro, même données, Même titre de colonne ......
Mais il y en a pourtant une, puisque l'une fonctionne et pas l'autre !

A+
 

Pièces jointes

  • Tableau Exemple Essai2.xlsm
    18.6 KB · Affichages: 29
  • Tableau Modeste 1.xlsm
    22.1 KB · Affichages: 31

Modeste

XLDnaute Barbatruc
Re : Report de cellules en ligne d'une feuille à une autre feuille en fonction de cou

Bonjour,

Il y a bien une différence de disposition entre les deux fichiers (et elle est importante!): j'utilise CurrentRegion dans les deux lignes de code, pour désigner la "zone en cours" ... dans mon fichier, les cellules de la zone de critères étaient à droite de la plage où l'extraction doit se faire. Chez toi, les zones de critères et d'extraction sont contigües
Insère une ligne vide entre ces deux zones et modifie le code en conséquence
Code:
Private Sub Worksheet_Activate()
    [A4].CurrentRegion.Offset(1, 0).Clear
    Sheets("Relevé").[B3].CurrentRegion.AdvancedFilter Action:=xlFilterCopy, criteriarange:=[M1:M2], CopyToRange:=[B4:I4]
End Sub

... Tu nous diras? ...
 

Chri8Ed

XLDnaute Occasionnel
Re : Report de cellules en ligne d'une feuille à une autre feuille en fonction de cou

Bonjour

J'ai reproduis exactement les mêmes dispositions que dans mon fichier exemple du départ
Je ne connaissais pas l’importance de laisser une ligne entre les critères et l'extraction
Cela dit même en respectant cette clause, cela ne fonctionne toujours pas dans mon fichier d'origine

Comme je vois que j'avance à tâtons et comme je l'avais dit, je n'avais jamais utilisé les filtres avancés jusqu'à maintenant
J'ai décidé de prendre le problème à bras-le-corps et de repartir de zéro
Par chance ces filtres avancés étant un sujet largement documenté sur le net et les tutos nombreux et bien fait
Je suis parvenu à régler mon problème
Il ne me reste plus que à perfectionner ma macro d'extraction, car là je butte encore un peu .

A+
 

Discussions similaires

  • Question
Microsoft 365 Tableau
Réponses
24
Affichages
667

Membres actuellement en ligne

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 105
dernier inscrit
Joffrette