Macro sélection plage & filtre lignes date

Darksanity

XLDnaute Nouveau
Bonjour à tous!

Ça fait un bout de temps que je fait des procédures sous Excel (2003 ou 2007, dépendant si je suis au bureau ou à la maison) qui sont vraiment longues et répétitives. J'ai donc essayer d'automatiser avec les macro et j'ai réussi à automatiser un bout de la procédure. Bien que je sauve déjà énormément de temps j'aimerais bien automatiser la procédure en entier.

Ce que je n'arrive pas à automatiser, c'est de sélectionner une plage de données (disons A1:J286 ou E2:E345) qui change à chaque tableau. Je voudrais donc que le macro fonctionne pour différents tableau (mais ils ont tous la même mise en forme). En autre mots, les différents tableaux sont identiques la seule différence est que certain on plus de lignes de données. Donc j'aurais besoin de dire à Excel : "Sélectionne A1:Jx // Sélectionne E2:Ex" où x = le nombre de lignes (qui change pour chaque tableau).

Deuxièmement, je voudrais qu'Excel puisse supprimer des lignes de manière conditionnelle par rapport à des dates et autres. Puisqu'une image vaut mille mots je vais en mettre une afin que vous compreniez ce que je veux faire:



Dans le tableau ci-dessus on voit des "trades" sur le marché des changes. Ce que je voudrais faire c'est qu'Excel supprime les lignes où ont voit qu'il y a plus d'une position ouverte en même temps. Autrement dit, si un moment dans "Date Opened" (ex : A7 = 2009-03-16 8:11) est plus tôt que le moment une ligne plus bas dans "Date Closed" (ex : D8 = 2009-03-17 11:39), alors supprimer cette ligne (dans l'exemple la ligne 7 serait supprimée). Notez que le macro devrait commencer par la bas. Voici ce que devrait avoir l'air le tableau après le passage du macro :



Les lignes 12 et 7 ont été supprimées.

J'espère que je me suis bien expliquer! Merci d'avance pour toute aide!!
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro sélection plage & filtre lignes date

Bonsoir Darksanity, bonsoir le forum,

Plutôt que des captures d'écran tu aurais mieux fait de mettre en pièce jointe un fichier exemple basé sur ton propre fichier... Ça nous permettrait de t'aider plus efficacement ! Du coup on risque de te donner des réponses pas adaptées.

Pour ton premièr problème, par exemple, pour sélectionner une plage de cellule contiguës il suffit de sélectionner n'importe quelle cellule du tableau et de combiner les touches du clavier [Ctrl]+
[*]
ou par macro (pourquoi pas) :


Code:
Sub Macro1()
Dim pl As Range
Set pl = ActiveCell.CurrentRegion
pl.Select
End Sub

Pour la suite j'attend un fichier....
 

James007

XLDnaute Barbatruc
Re : Macro sélection plage & filtre lignes date

Bonsoir,

S'il s'agit de tes positions forex ... c'est plutôt étonnant que tu n'es pas déjà tes macros opérartionelles ...
Ceci dit, Robert a raison ... les captures d'écran n'apportent pas grand chose pour t'aider concrètement ...

A +
 

Darksanity

XLDnaute Nouveau
Re : Macro sélection plage & filtre lignes date

Bonsoir Darksanity, bonsoir le forum,

Plutôt que des captures d'écran tu aurais mieux fait de mettre en pièce jointe un fichier exemple basé sur ton propre fichier... Ça nous permettrait de t'aider plus efficacement ! Du coup on risque de te donner des réponses pas adaptées.

Pour ton premièr problème, par exemple, pour sélectionner une plage de cellule contiguës il suffit de sélectionner n'importe quelle cellule du tableau et de combiner les touches du clavier [Ctrl]+
[*]
ou par macro (pourquoi pas) :


Code:
Sub Macro1()
Dim pl As Range
Set pl = ActiveCell.CurrentRegion
pl.Select
End Sub

Pour la suite j'attend un fichier....
J'ai mis le même fichier que dans les images avec "Avant" et "Après" comme onglets.

Pour ce qui est de ctrl + * c'est génial!! Merci beaucoup, je vais pouvoir automatiser une autre partie. Cette technique est cependant limitée car elle prend toute les cellules qui ont quelque chose dedans. Comment je ferais pour qu'Excel sélectionne toutes les cellules qui contiennent un chiffre d'une seule colonne?

Ou encore disons que je veux une formule du style D1177+E1176 sur l'avant-dernière ligne (où la ligne 1177 est la dernière ligne dans l'exemple) et je veux remplir jusqu'en haut (en cliquant le petit carré) comment je fais pour dire à excel: "Prend l'avant-dernière ligne (qui change à chaque tableau) met x formule et rempli jusqu'en haut". Bref comme je pourrais faire pour qu'Excel trouve l'avant-dernière ou la dernière ligne sans que j'aille à rentrer le numéro de la dernière ligne pour chaque tableau.

Merci encore!!
 

Pièces jointes

  • exemple.xls
    18 KB · Affichages: 107
  • exemple.xls
    18 KB · Affichages: 106
  • exemple.xls
    18 KB · Affichages: 111
Dernière édition:

Darksanity

XLDnaute Nouveau
Re : Macro sélection plage & filtre lignes date

Bonsoir,

S'il s'agit de tes positions forex ... c'est plutôt étonnant que tu n'es pas déjà tes macros opérartionelles ...

A +
lol non ce ne sont pas mes position forex mais l'historique de signaux. Je veux voir comment les signaux auraient été affectés par des stops, des limites ou des nombre de positions ouvertes limitées.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro sélection plage & filtre lignes date

Bonsoir le , bonsoir le forum,

Pour ton premier problème je te propose la solution suivante. Puisque tu ne connais pas la colonne à l'avance je te propose de cliquer dans n'importe quelle cellule de la colonne puis de lancer la macro ci-dessous :
Code:
Sub Macro1()
Dim adc As Long 'déclare la variable adc (Avant Dernière Cellule)
adc = Cells(65536, ActiveCell.Column).End(xlUp).Row - 1 'définit la variable adc
'place la formule dans les lignes 1 à adc de la colonne
Range(ActiveCell, Cells(adc, ActiveCell.Column)).Formula = "ta formule"
End Sub

Je planche sur le second problème car dans l'exemple te tableau est fixe mais, selon ton premier post, sa position peut varier...
 

James007

XLDnaute Barbatruc
Re : Macro sélection plage & filtre lignes date

Si tu ne veux supprimer que les lignes 7 et 12, il me semble que tu dois avoir d'autres règles en plus de celle qui compare l'antériorité sur les dates de la colonne D ...

A +
 

Darksanity

XLDnaute Nouveau
Re : Macro sélection plage & filtre lignes date

Juste une précision ... dans ta feuille tu veux supprimer deux lignes alors que les deals sont sur des cross différents ??? est-ce vraiment sur ce que tu veux ?

A +
Ben mon premier but serait de faire un macro qui supprime les lignes ou une position à été ouverte alors qu'il y en avait déjà une d'ouverte. Par la suite, j'essaierai quelque chose du style supprime les lignes ou une position a été ouverte alors qu'une position identique est déjà ouverte. Puis finalement prendre les 2 facteur en comptes (nombre de positions ouverte totales et quel type de pair). Mais bon je veux commencer par quelque chose relativement simple.
 

Darksanity

XLDnaute Nouveau
Re : Macro sélection plage & filtre lignes date

Bonsoir le , bonsoir le forum,

Pour ton premier problème je te propose la solution suivante. Puisque tu ne connais pas la colonne à l'avance je te propose de cliquer dans n'importe quelle cellule de la colonne puis de lancer la macro ci-dessous :
Code:
Sub Macro1()
Dim adc As Long 'déclare la variable adc (Avant Dernière Cellule)
adc = Cells(65536, ActiveCell.Column).End(xlUp).Row - 1 'définit la variable adc
'place la formule dans les lignes 1 à adc de la colonne
Range(ActiveCell, Cells(adc, ActiveCell.Column)).Formula = "ta formule"
End Sub

Je planche sur le second problème car dans l'exemple te tableau est fixe mais, selon ton premier post, sa position peut varier...
En fait je connais la colonne à l'avance. Il 'agit des même colonne pour tous les tableaux et donc la formule va dans la même colonne pour tous les taleaux. C'est juste le nombre de lignes et les chiffres qui changent. Même chose pour le deuxième problème. J'ai essayer ton code et sa marche juste pas... Je reçoit "Erreur d'exécution '1004': Erreur définie par l'application ou l'objet".

J'ai déjà réussi à faire remplir une formule de haut en bas à partir d'une cellule qui reste la même pour chaque tableau comme ça:
Code:
ActiveCell.Offset(1, 4).Range("A1").Select
ActiveCell.FormulaR1C1 = "[i]formule[/i]"
Selection.AutoFill Destination:=ActiveCell.Range("A1:A" & Range("A1").End(xlDown).Row)
ActiveCell.Range("A1:A" & Range("A1").End(xlDown).Row).Select

Étrangement la formule est remplie jusqu'à la dernière ligne + 1. Cependant, je ne suis pas sur comment faire pour faire référence à la dernière ligne sans dire le nombre exacte.
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
277

Statistiques des forums

Discussions
312 111
Messages
2 085 395
Membres
102 882
dernier inscrit
Sultan94