XL 2016 numero de ligne et filtres

miko

XLDnaute Nouveau
Bonjour a tous !

voila quelques heures que je butte sur un leger probleme qui me reduirait une masse considerable de travail si vous pouviez m'aider a en trouver la solution !

je m'explique,
j'ai un tableau a plusieurs colonnes (A, B et C)
A contenant des noms
B des donnéees diverses
C d'autres données diverses

j'utilise une macro pour extraire les données de ces colonnes (macro simple dans le fichier joint qui consiste a faire B + C) et a renvoyer le resultat dans une autre colonne sur une seconde feuille afin d'etre utiliser pour l'elaboration d'un graphique

je compte dans un premier temps le nombre de ligne rempli dans A grace a:
nligne = Range("A2").End(xlDown).Row

j'utilise ce comptage pour effectuer mon instructions (a savoir B+C) avec
With Worksheets("Feuil1")
For Each c In .Range("A2:A" & nligne)
Worksheets("Feuil2").Range("A" & Trim(c.Row)).Value = .Range("b" & Trim(c.Row)).Value + .Range("c" & Trim(c.Row)).Value
Next c
End With


or pour ameliorer la fonctionnalité de mon fichier ainsi que sa lisibilité j'ai besoin d'appliquer un filtre sur la colonne A que j'ai ajouter dans ma macro avec
Worksheets("Feuil1").Range("A1").AutoFilter Field:=1, Criteria1:="a"

je me retrouve donc avec 3 lignes visible mais ces ligne correspondent aux numero 2,7 et 8

mon comptage de ligne n'est donc plus bon pour le renvoi des données vers la seconde feuille.

ma question est par consequent, est il possible de "dire" a excel "il n'y a que 3 lignes visible donc elles correspondent a la ligne 1 , 2 et 3" pour que le comptage soit a nouveau correct ainsi que le renvoie des données.

le fichier joint et les fonctions ici sont assez basique mais je cherche avant tout a comprendre la mecanique du filtrage et de son utilisation dans le code VBA afin de l'appliquer a mon vrai fichier qui est beaucoup plus consequent en terme de taille.

Cordialement :)
 

Pièces jointes

  • Classeur1.xlsm
    16.1 KB · Affichages: 19

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

@miko
Pourquoi ne pas simplement utiliser un tableau croisé dynamique?
0102TCD.jpg

Je ne comprends pas la logique de tes sommes
Si tu filtres sur a, pourquoi la valeur 77 apparaît sur la feuille 2
(77=2+75 ce qui concerne b d'après la feuille 1)
 
Dernière édition:

miko

XLDnaute Nouveau
Bonjour Philippe, merci pour ta reponse.
Cependant ce n'est pas le resultat que je recherche.
En effet, je tiens a conserver mes instructions au sein de la fonction.

Existe-t-il une commande en VBA pour simplement simuler de f"aux" numeros de lignes?
Ou alors en y reflechissant, peut etre noté les veritables numeros de ligne au sein d'un dictionnaire et ce servir de ce dernier pour remplacer les numeros de lignes lorsque j'en ai besoin durant mes intructions?

Je ne sais pas si ce que je dis parait clair ^^
 

Staple1600

XLDnaute Barbatruc
Re, bonjour phlaurent, mapomme

@miko
Je pue de la gue.le ou tu as zappé le message#3? :rolleyes:

Alors tout comme mapomme, j'ai macroté (comme un cochon) alors je poste
NB: je parle de moi, niveau cochon, pas de mapomme, bien que les cochons raffolent des pommes ;)
VB:
Sub Macro1()
Dim p As Range, ws As Worksheet: Set ws = Sheets("Feuil2")
Application.ScreenUpdating = False
ActiveSheet.Range("$A$1:$C$14").AutoFilter 1, "a"
ActiveSheet.AutoFilter.Range.SpecialCells(12).SpecialCells(2, 1).Copy ws.[A1]
Set p = ws.Range("C1:C" & ws.Cells(Rows.Count, 1).End(3).Row): p.Formula = "=A1+B1": p.Value = p.Value
ws.Columns("A:B").Delete: ws.[A1].Insert Shift:=xlDown: ws.[A1] = "total"
ActiveSheet.ShowAllData
End Sub
 
Dernière édition:

miko

XLDnaute Nouveau
disons simplement que je debute dans excel et le vba, j ai construit mon fichier en fouillant sur le net et en lisant plein de tuto pour les fonctions qui m'interesse et je n'ai pas encore eu l'occasion de me pencher sur le cas du TCD.
Tu peux me fais un briefing dessus ? en attendant je vais voir ce que je peux trouver la dessus sur le net!

mais une premiere question me vient deja a l esprit, le TCD va t il modifier les reste de mes données presente sur la feuille?

Pour la petite histoire, il s'agit d'une gestion de bankroll pour les paris sportif,
sur la feuille 1 se trouve colonne A la date colonne b, le sport, colonne c la ligue, colonne D et E le nom des equipes, colonne F le type de paris, colonne G la cote, colonne h la definition du paris(simple ou combiné), colonne J le resultat (V ou D) colonne L la mise et colonne M le gain

j ai deja bricolé pas mal dessus et j arrive a extraire toutes les donné sur une autre feuille en fonction de la date que je transpose en jour numero de semaine ou mois afin d obtenir 4 colonne avec la date les mises additionnée sur l ensemble de la journée, semaine ou mois selon ce qui a été selectionné) l'addition des gains.....etc...

etant donné que ma macro est deja assez consequente pour effectuer plein de type d extraction pour alimenter mon graph j essaye de trouver quelque chose qui tournerait autour de ce que je vous ai presenter dans mon premier post a savoir le compte de nombre de ligne rempli avec

nligne = Range("A2").End(xlDown).Row

et le dimensionnement d'un nouveau tableau sur une autre feuille avec

With Worksheets("Feuil1")
For Each c In .Range("A2:A" & nligne)
Worksheets("Feuil2").Range("A" & Trim(c.Row)).Value = .Range("b" & Trim(c.Row)).Value + .Range("c" & Trim(c.Row)).Value
Next c
End With

j'essaye actuellement de me tourner vers un dictionnaire que je pourrais remplir de la meme maniere grace a la fonction soustotal.

grace a cette derniere je pourrais deja connaitre le nombre d occurrence mais je ne trouve pas pour le moment comment extraine les numeros de ligne correspondant a ces occurences.

dans l'esprit ca serait quelque chose du genre

nligne = 'soustotal(du-filtre)
For Each c In .Range("A2:A" & nligne)
Mondico.add c, numero-reel-de-la-ligne
 

Staple1600

XLDnaute Barbatruc
Re

L'avantage du TCD, c'est qu'il a un copain: le GCD (G comme graphique)
L'avantage du TCD (eh oui encore un) c'est qu'il ne modifie nullement les données et qu'on peut le disposer soit sur une feuille à part soit sur la feuille où sont les données.
L'avantage du TCD ( nous en sommes à trois) c'est qu'on ajouter des données dans la base et o magie, il pourra s'actualier en cliquant sur Actualiser tout
Bref il n'y a que des avantages à croiser le tableau avec dynamisme ;)

NB: Conseil en passant
Avant de penser VBA, toujours vérifier si les fonctions natives d'Excel ne peuvent pas faire le job ;)
(On oublie trop souvent par exemple Données/Convertir, les TCD, GCD, le menu Remplissage etc...)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour miko, phlaurent55 :), Staple1600 :),

J'étais en train de publier ce que j'avais fait à 8h10 quand est survenue une panne générale d'électricité sur une partie de la ville. Trois heures ont passé, le courant est revenu. Donc je publie ce que j'avais fait au moment de la panne. Il y a trois méthodes. La C est la plus rapide, la A la plus lente.
 

Pièces jointes

  • miko- filtrage- v1.xlsm
    62.8 KB · Affichages: 22
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour Staple1600,

Alors tout comme mapomme, j'ai macroté (comme un cochon) alors je poste
NB: je parle de moi, niveau cochon, pas de mapomme, bien que les cochons raffolent des pommes ;)

Bon j'ai vu que mon premier message était bien passé malgré la panne ENEDIS (quatre coupures depuis la remise en ligne du réseau, ils vont finir par me bousiller le disque dur :mad:)

Même si la remarque m'avait été adressée, je ne m'en serais pas offusqué car "tout est bon dans le cochon" ! Les bretons et les alsaciens le savent bien :p.
 

Staple1600

XLDnaute Barbatruc
Re, mapomme

Tu vis dangereusement ou tu possèdes un onduleur (comme ma pomme) ? ;)

[aparté]
Tout est bon dans le cochon, certes... mais jusqu'à quand?
Car le vegan s'infiltre partout, bientôt il y aura même une mise à jour de VBA
En plus d' Option Explicit, on aura désormais
Veganate Module
[/aparté]
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Tu vis dangereusement ou tu possèdes un onduleur (comme ma pomme) ? ;)

Je vis dangereusement :eek:!

[aparté]
Tout est bon dans le cochon, certes... mais jusqu'à quand?
Car le vegan s'infiltre partout, bientôt il y aura même une mise à jour de VBA
En plus d' Option Explicit, on aura désormais
Veganate Module
[/aparté]
Oui mais en Armorique, il y aura bien un village qui résistera encore et toujours :p
 

Discussions similaires

Réponses
4
Affichages
213

Statistiques des forums

Discussions
312 225
Messages
2 086 411
Membres
103 201
dernier inscrit
centrale vet