Filtre ou fonction excel
Fermé
jeremy
-
5 sept. 2006 à 14:11
Gallygun Messages postés 5 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 12 juin 2008 - 12 juin 2008 à 08:41
Gallygun Messages postés 5 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 12 juin 2008 - 12 juin 2008 à 08:41
A voir également:
- Filtre ou fonction excel
- Excel fonction si et - Guide
- Liste déroulante excel - Guide
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Fonction moyenne excel - Guide
- Word et excel gratuit - Guide
16 réponses
Kobaya
Messages postés
282
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
10 janvier 2008
214
5 sept. 2006 à 17:02
5 sept. 2006 à 17:02
bonjour jeremy,
Je te soumets ce code. Avant de la faire tourner assure-toi que la couleur bleue que j'ai utilisé comme référence est bien celle que tu recherches. Dans la fenêtre Exécution du VBE, exécute cette commande : ?activecell.Font.Color. Si c'est 16711680, c'est OK, sinon il faudra remplacer vbBlue par la valeur que tu auras ainsi obtenue.
Je te soumets ce code. Avant de la faire tourner assure-toi que la couleur bleue que j'ai utilisé comme référence est bien celle que tu recherches. Dans la fenêtre Exécution du VBE, exécute cette commande : ?activecell.Font.Color. Si c'est 16711680, c'est OK, sinon il faudra remplacer vbBlue par la valeur que tu auras ainsi obtenue.
Sub Bilan() Dim rngPlage As Range Dim blnCouleur As Boolean Dim intColonne As Integer Dim lngLigneFin As Long Dim lngIndex As Long Dim lngIndexCopie As Long Dim wshFeuille As Worksheet Dim wshBilan As Worksheet ' création de l'onglet Bilan où seront recopiées les lignes répondant à la condition (texte en bleu) Set wshBilan = Sheets.Add wshBilan.Name = "Bilan" ' parcourir toutes les feuilles (sauf Bilan) lngIndexCopie = 1 ' 1ere ligne où copier les données dans la feuille Bilan For Each wshFeuille In Sheets wshFeuille.Select If wshFeuille.Name <> "Bilan" Then Set rngPlage = wshFeuille.Range("A1:" & wshFeuille.Cells.SpecialCells(xlCellTypeLastCell).Address) ' nombre de lignes utilisées dans la feuille lngLigneFin = rngPlage.Rows.Count For lngIndex = 1 To lngLigneFin ' par défaut on considère que le texte est en bleu blnCouleur = True For intColonne = 2 To 256 If wshFeuille.Cells(lngIndex, intColonne).Font.Color <> vbBlue Then ' si le texte de la colonne intColonne n'est pas en bleu blnCouleur = False End If Next ' si toute la ligne a le texte en bleu If blnCouleur Then ' la copier dans la feuille Bilan wshFeuille.Cells(lngIndex, 1).EntireRow.Copy Destination:=wshBilan.Cells(lngIndexCopie, 1) lngIndexCopie = lngIndexCopie + 1 End If Next End If Next Application.CutCopyMode = False wshBilan.Select Set rngPlage = Nothing: Set wshFeuille = Nothing: Set wshBilan = Nothing End Sub
Merci beaucoup kobaya,
cela fonctionne très bien et tes explications etaient très claires.
Encore mille merci, je vais m'eviter des heures de boulot supplémentaires.
Jeremy.
cela fonctionne très bien et tes explications etaient très claires.
Encore mille merci, je vais m'eviter des heures de boulot supplémentaires.
Jeremy.
Kobaya
Messages postés
282
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
10 janvier 2008
214
8 sept. 2006 à 23:13
8 sept. 2006 à 23:13
content de t'avoir rendu service.
:-)
:-)
Bonjour,
J'ai un fichier Excel avec plusieurs onglets, je voudrais pouvoir réaliser un filtre sur les données des différentes feuilles ou onglets. Chaque onglet contient un tableau identique avec des données parfois identiques, le but est de comptabilser le tout dans un tableau unique. J'ai environ 150 onglets donc je voudrais éviter de tout me faire à la main, d'après vous est-ce possible ?
Par avance merci de vos réponses.
Sumacnaj
J'ai un fichier Excel avec plusieurs onglets, je voudrais pouvoir réaliser un filtre sur les données des différentes feuilles ou onglets. Chaque onglet contient un tableau identique avec des données parfois identiques, le but est de comptabilser le tout dans un tableau unique. J'ai environ 150 onglets donc je voudrais éviter de tout me faire à la main, d'après vous est-ce possible ?
Par avance merci de vos réponses.
Sumacnaj
J'ai utilisé le code donné par Kobaya le 8 septembre 2006 pour copier dans un onglet nommé bilan les enregistrements d'une base de données Excel écrits en bleu.
Cela fonctionne partiellement. La feuille bilan est créée. La dernière ligne de la feuille active est bien trouvée mais en réponse dans bilan, il manque des lignes qui sont colorées en bleu dans la feuille active. Je ne comprends pas pourquoi les derniers enregistrements ne sont pas pris en compte. Kobaya peut-il me répondre ?
J'ai copié le code que j'ai utilisé.
Sub Bilan()
Dim rngPlage As Range
Dim blnCouleur As Boolean
Dim intColonne As Integer
Dim lngLigneFin As Long
Dim lngIndex As Long
Dim lngIndexCopie As Long
Dim wshFeuille As Worksheet
Dim wshBilan As Worksheet
' création de l'onglet Bilan où seront recopiées les lignes répondant à la condition (texte en bleu)
Set wshBilan = Sheets.Add
wshBilan.Name = "Bilan"
' parcourir toutes les feuilles (sauf Bilan)
lngIndexCopie = 1 ' 1ere ligne où copier les données dans la feuille Bilan
For Each wshFeuille In Sheets
wshFeuille.Select
If wshFeuille.Name <> "Bilan" Then
Set rngPlage = wshFeuille.Range("A1:" & wshFeuille.Cells.SpecialCells(xlCellTypeLastCell).Address)
' nombre de lignes utilisées dans la feuille
lngLigneFin = rngPlage.Rows.Count
For lngIndex = 1 To lngLigneFin
' par défaut on considère que le texte est en bleu
blnCouleur = True
For intColonne = 2 To 256
If wshFeuille.Cells(lngIndex, intColonne).Font.Color <> vbBlue Then
' si le texte de la colonne intColonne n'est pas en bleu
blnCouleur = False
End If
Next
' si toute la ligne a le texte en bleu
If blnCouleur Then
' la copier dans la feuille Bilan
wshFeuille.Cells(lngIndex, 1).EntireRow.Copy Destination:=wshBilan.Cells(lngIndexCopie, 1)
lngIndexCopie = lngIndexCopie + 1
End If
Next
End If
Next
Application.CutCopyMode = False
wshBilan.Select
Set rngPlage = Nothing: Set wshFeuille = Nothing: Set wshBilan = Nothing
End Sub
Cela fonctionne partiellement. La feuille bilan est créée. La dernière ligne de la feuille active est bien trouvée mais en réponse dans bilan, il manque des lignes qui sont colorées en bleu dans la feuille active. Je ne comprends pas pourquoi les derniers enregistrements ne sont pas pris en compte. Kobaya peut-il me répondre ?
J'ai copié le code que j'ai utilisé.
Sub Bilan()
Dim rngPlage As Range
Dim blnCouleur As Boolean
Dim intColonne As Integer
Dim lngLigneFin As Long
Dim lngIndex As Long
Dim lngIndexCopie As Long
Dim wshFeuille As Worksheet
Dim wshBilan As Worksheet
' création de l'onglet Bilan où seront recopiées les lignes répondant à la condition (texte en bleu)
Set wshBilan = Sheets.Add
wshBilan.Name = "Bilan"
' parcourir toutes les feuilles (sauf Bilan)
lngIndexCopie = 1 ' 1ere ligne où copier les données dans la feuille Bilan
For Each wshFeuille In Sheets
wshFeuille.Select
If wshFeuille.Name <> "Bilan" Then
Set rngPlage = wshFeuille.Range("A1:" & wshFeuille.Cells.SpecialCells(xlCellTypeLastCell).Address)
' nombre de lignes utilisées dans la feuille
lngLigneFin = rngPlage.Rows.Count
For lngIndex = 1 To lngLigneFin
' par défaut on considère que le texte est en bleu
blnCouleur = True
For intColonne = 2 To 256
If wshFeuille.Cells(lngIndex, intColonne).Font.Color <> vbBlue Then
' si le texte de la colonne intColonne n'est pas en bleu
blnCouleur = False
End If
Next
' si toute la ligne a le texte en bleu
If blnCouleur Then
' la copier dans la feuille Bilan
wshFeuille.Cells(lngIndex, 1).EntireRow.Copy Destination:=wshBilan.Cells(lngIndexCopie, 1)
lngIndexCopie = lngIndexCopie + 1
End If
Next
End If
Next
Application.CutCopyMode = False
wshBilan.Select
Set rngPlage = Nothing: Set wshFeuille = Nothing: Set wshBilan = Nothing
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
15 janv. 2008 à 19:43
15 janv. 2008 à 19:43
Bonsoir,
es-tu sûr à 100% que ce soit le même bleu ?
de plus il contrôle que toute la ligne (à part la 1ère cellule) soit en bleu
eric
es-tu sûr à 100% que ce soit le même bleu ?
de plus il contrôle que toute la ligne (à part la 1ère cellule) soit en bleu
eric
Tout d'abord, merci pour le message.
Oui, j'ai vérifié, il s'agit bien du même bleu car j'obtiens la même valeur dans la fenêtre exécution du VBE à savoir 16711680. La seule différence avec la question de Jérémy, c'est que je n'ai qu'un onglet dans mon classeur, mais je ne pense pas que ce soit la raison.
Au cours de l'éxécution du code, la dernière cellule de la plage est trouvée, mais en fin d'exécution, c'est le contenu d'une cellule située 68 lignes au-dessus qui est inscrit dans la zone d'édition d'Excel. Peux-tu me trouver la solution ?
Oui, j'ai vérifié, il s'agit bien du même bleu car j'obtiens la même valeur dans la fenêtre exécution du VBE à savoir 16711680. La seule différence avec la question de Jérémy, c'est que je n'ai qu'un onglet dans mon classeur, mais je ne pense pas que ce soit la raison.
Au cours de l'éxécution du code, la dernière cellule de la plage est trouvée, mais en fin d'exécution, c'est le contenu d'une cellule située 68 lignes au-dessus qui est inscrit dans la zone d'édition d'Excel. Peux-tu me trouver la solution ?
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
16 janv. 2008 à 11:02
16 janv. 2008 à 11:02
Bonjour,
Difficile de dire pourquoi ça bugue sans ta feuille avec le code...
Si tu pouvais la déposer sur www.cijoint.fr et coller le lien ici.
eric
Difficile de dire pourquoi ça bugue sans ta feuille avec le code...
Si tu pouvais la déposer sur www.cijoint.fr et coller le lien ici.
eric
Je continue à essayer de comprendre. J'ai mis plusieurs onglets dans mon classeur. J'ai recommencé plusieurs fois le code. Tous les enregistrements ne sont pas copiés. Sur un échantillon de 28 lignes, il me manque 3 enregistrements dans bilan, 4ème, 21 ème et 27ème ligne. Je désespère !!
Après avoir recommencé le code et en vérifiant ceux qui ne sortaient pas, j'ai constaté que toute la ligne n'était pas colorée pour certains. Ceci explique tout et je te remercie. Ton aide a été précieuse. Pourrais-tu me dire s'il est possible de rectifier le code pour que le test ne se fasse que sur les cellules de la première colonne ? Cela m'éviterait de me coltiner un travail de titan pour vérifier que toutes les lignes en bleu soient entièrement colorées. Mon fichier de base fait 36000 lignes !!
http://www.cijoint.fr/cij11829823931558.xls
http://www.cijoint.fr/cij11829823931558.xls
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
16 janv. 2008 à 14:54
16 janv. 2008 à 14:54
le pb était donc bien sur la feuille.
dans
remplace 256 par le n° de la dernière colonne que tu souhaites tester.
eric
dans
For intColonne = 2 To 256(pour les colonnes de 2 à 256...)
remplace 256 par le n° de la dernière colonne que tu souhaites tester.
eric
C'est ce que j'ai fait en attendant une réponse. Je suis complètement débutante en VBE mais j'ai fait de la programmation dans mon jeune temps et je connais bien Excel. Malheureusement, le résultat obtenu est le même. C'est comme si Excel reconnaissait un code pour la coloration du rang d'un seul coup ( position à l'extrême gauche de la souris pour sélectionner le rang) et un autre pour la coloration d'une plage d'un rang même si toutes les cellules de la plage sont colorées.
Ce n'est que si tout le rang est coloré que le code fontionne. Essaie sur le fichier échantillon que j'ai adressé et dis-moi si tu trouves pareil.
Cordialement,
Ménilmuche
Ce n'est que si tout le rang est coloré que le code fontionne. Essaie sur le fichier échantillon que j'ai adressé et dis-moi si tu trouves pareil.
Cordialement,
Ménilmuche
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
16 janv. 2008 à 15:49
16 janv. 2008 à 15:49
Je viens de regarder ton fichier.
Les lignes 18 et 24 sont absentes du bilan en effet.
Mais si tu regardes la couleur de police pour B18 et D24 tu peux voir qu'elle est sur 'automatique'.
Fais plus simple et contrôle la 1ère colonne uniquement, je suppose qu'elle doit tjs être remplie, que si celle ci est bleue lautres cellules de la ligne sont supossées l'être aussi. Et tu peux voir la couleur.
Donc:
For intColonne = 1 To 1
(pour garder la structure de boucle au cas ou ça reserve...)
eric
Les lignes 18 et 24 sont absentes du bilan en effet.
Mais si tu regardes la couleur de police pour B18 et D24 tu peux voir qu'elle est sur 'automatique'.
Fais plus simple et contrôle la 1ère colonne uniquement, je suppose qu'elle doit tjs être remplie, que si celle ci est bleue lautres cellules de la ligne sont supossées l'être aussi. Et tu peux voir la couleur.
Donc:
For intColonne = 1 To 1
(pour garder la structure de boucle au cas ou ça reserve...)
eric
Un immense MERCI !!!
Ça fonctionne super bien ! J'ai même pu reconstituer un autre code pour sélectionner les enregistrements d'une autre couleur dans un autre onglet nommé autrement que bilan. Super !!
Ça fait du bien d'être aidée, je me sens moins seule, j'ai souvent passé des heures devant mon ordi pour avancer.
Cela me donne envie d'approfondir le VBE. Merci Éric !!
Cordialement,
Ménilmuche
Ça fonctionne super bien ! J'ai même pu reconstituer un autre code pour sélectionner les enregistrements d'une autre couleur dans un autre onglet nommé autrement que bilan. Super !!
Ça fait du bien d'être aidée, je me sens moins seule, j'ai souvent passé des heures devant mon ordi pour avancer.
Cela me donne envie d'approfondir le VBE. Merci Éric !!
Cordialement,
Ménilmuche
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
16 janv. 2008 à 17:43
16 janv. 2008 à 17:43
De rien
Au fait c'est VBA hein... ;-)
Bonne soirée
Au fait c'est VBA hein... ;-)
Bonne soirée
amenoo
Messages postés
1
Date d'inscription
mercredi 30 avril 2008
Statut
Membre
Dernière intervention
30 avril 2008
30 avril 2008 à 14:52
30 avril 2008 à 14:52
Bonjour,
Je vous explique mon problème... Je suis un débutant sur excel, j'aimerai savoir comment dois je faire pour créer une feuille Bilan sur laquelle les informations d'une cellule particulière par exemple (comme la cellule F53 dans mon cas) sont retranscrit automatiquement dans la feuille bilan. mais ceci doit etre appliquer à toutes les feuilles de mon classeur.
merci d'avance de consacrer un peu de votre temps sur mon problème
Amenoo
Je vous explique mon problème... Je suis un débutant sur excel, j'aimerai savoir comment dois je faire pour créer une feuille Bilan sur laquelle les informations d'une cellule particulière par exemple (comme la cellule F53 dans mon cas) sont retranscrit automatiquement dans la feuille bilan. mais ceci doit etre appliquer à toutes les feuilles de mon classeur.
merci d'avance de consacrer un peu de votre temps sur mon problème
Amenoo
Gallygun
Messages postés
5
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
12 juin 2008
11 juin 2008 à 11:22
11 juin 2008 à 11:22
Bonjour a tous,
je viens juste de me mettre a excel et j'ai un petit soucis..
je dispose d'un bareme de materiel a vendre sur une feuille et d'une feuille de chiffrage destinée au client sur une autre feuille. Je souhaiterais inserer dans ma feuille chiffrage les lignes de la feuille bareme dont la colonne "quantité" est superieur a 0.
mon probleme est donc le meme que Jeremy mais 2 choses differe:
_ je veux filtrer des quantités, a savoir tout ce qui est superieur a 0.
_ ensuite inserer ces données dans un tableau deja creer, la section du tableau dans la quelle je veux inserer comporte une suite a ne pas modifier, d'ou l'utilité de l'insertion.
Comme je debute completement, j'ai juste a peu pres compris comment fonctionne le code de kobaya mais je ne sais pas comment le modifier. Je me doute ayant quelques notion tres petites de C++ qu'il faudra supprimer la definition des variables concernant les couleurs mais je ne sais pas par quoi les remplacer,etc...
enfin bref, je suis completement impuissant donc un peu d'aide serait la bienvenue
merci d'avance a tous
je viens juste de me mettre a excel et j'ai un petit soucis..
je dispose d'un bareme de materiel a vendre sur une feuille et d'une feuille de chiffrage destinée au client sur une autre feuille. Je souhaiterais inserer dans ma feuille chiffrage les lignes de la feuille bareme dont la colonne "quantité" est superieur a 0.
mon probleme est donc le meme que Jeremy mais 2 choses differe:
_ je veux filtrer des quantités, a savoir tout ce qui est superieur a 0.
_ ensuite inserer ces données dans un tableau deja creer, la section du tableau dans la quelle je veux inserer comporte une suite a ne pas modifier, d'ou l'utilité de l'insertion.
Comme je debute completement, j'ai juste a peu pres compris comment fonctionne le code de kobaya mais je ne sais pas comment le modifier. Je me doute ayant quelques notion tres petites de C++ qu'il faudra supprimer la definition des variables concernant les couleurs mais je ne sais pas par quoi les remplacer,etc...
enfin bref, je suis completement impuissant donc un peu d'aide serait la bienvenue
merci d'avance a tous
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
11 juin 2008 à 14:18
11 juin 2008 à 14:18
Bonjour,
Crée ta propre discusion si tu veux que le maximum de personne puisse répondre.
Ton besoin est assez éloigné de celui de jeremy et ne nécessite peut-être pas l'emploi de vba.
Le mieux est de faire un fichier exemple et le déposer sur cijoint.fr et coller dans ta nouvelle discussion le lien fourni.
eric
Crée ta propre discusion si tu veux que le maximum de personne puisse répondre.
Ton besoin est assez éloigné de celui de jeremy et ne nécessite peut-être pas l'emploi de vba.
Le mieux est de faire un fichier exemple et le déposer sur cijoint.fr et coller dans ta nouvelle discussion le lien fourni.
eric
Gallygun
Messages postés
5
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
12 juin 2008
12 juin 2008 à 08:41
12 juin 2008 à 08:41
Tu as raison, donc je viens de creer le sujet!!
Titre: Filtre et copie de ligne sur excel
le fichier exemple y est joint.
Merci
Titre: Filtre et copie de ligne sur excel
le fichier exemple y est joint.
Merci