Enregistrer une date et recopier dans des cellules filtrées

Bonjour,

Je suis débutante en VBA et je suis bloquée sur une macro.

Je travaille sur un fichier de 35000 lignes. Dans la colonne O, je fais une simple soustraction entre 2 dates qui calcule un délais.

Lorsque les deux dates sont identiques et que le résultat est donc de 0, via une macro, je fais un filtre en colonne O pour sélectionner toutes les cellules à 0.

Puis, Je supprime toutes les dates enregistrées en colonne N pour les remplacer par 31/12/2016. Cette même date doit être copiée dans toutes les cellules pour lesquelles j'ai supprimé les dates.

Sans macro, j'utilise le CRTL+B mais dans une macro, le résultat n'est pas probant...

Si quelqu'un pouvait m'aider à faire cela de manière un peu plus "pro", ce serait vraiment sympa.

Voici la macro générée grâce à l'enregistreur :

Range("D1").Select

Selection.AutoFilter

ActiveWindow.SmallScroll ToRight:=3

ActiveSheet.Range("$A$1:$O$37154").AutoFilter Field:=15, Criteria1:="=0", _

Operator:=xlAnd

Range("N3:N37154").Select

Selection.ClearContents

Range("N3").Select

ActiveCell.FormulaR1C1 = "12/31/2016"

Range("N3:N37154").Select

Selection.FillDown

ActiveWindow.ScrollRow = 36979

ActiveWindow.ScrollRow = 36662

ActiveWindow.ScrollRow = 36106

ActiveWindow.ScrollRow = 35392

ActiveWindow.ScrollRow = 34043

ActiveWindow.ScrollRow = 31821

ActiveWindow.ScrollRow = 29361

ActiveWindow.ScrollRow = 26505

ActiveWindow.ScrollRow = 23807

ActiveWindow.ScrollRow = 21585

ActiveWindow.ScrollRow = 19760

ActiveWindow.ScrollRow = 18490

ActiveWindow.ScrollRow = 17221

ActiveWindow.ScrollRow = 16268

ActiveWindow.ScrollRow = 15475

ActiveWindow.ScrollRow = 14919

ActiveWindow.ScrollRow = 14443

ActiveWindow.ScrollRow = 14284

ActiveWindow.ScrollRow = 14205

ActiveWindow.ScrollRow = 13412

ActiveWindow.ScrollRow = 11348

ActiveWindow.ScrollRow = 9365

ActiveWindow.ScrollRow = 8412

ActiveWindow.ScrollRow = 7778

ActiveWindow.ScrollRow = 6984

ActiveWindow.ScrollRow = 6429

ActiveWindow.ScrollRow = 5714

ActiveWindow.ScrollRow = 5000

ActiveWindow.ScrollRow = 4286

ActiveWindow.ScrollRow = 3493

ActiveWindow.ScrollRow = 2858

ActiveWindow.ScrollRow = 2144

ActiveWindow.ScrollRow = 1588

ActiveWindow.ScrollRow = 1033

ActiveWindow.ScrollRow = 636

ActiveWindow.ScrollRow = 318

ActiveWindow.ScrollRow = 80

ActiveWindow.ScrollRow = 1

Range("N1").Select

Un grand merci !

Stéphanie

Ta macro ne fait absolument pas ce que tu as dit...

Bonjour et bienvenu

Pourquoi effacer si c'est pour écrire après

A tester

Sub test()
  Range("$A$1:$O$37154").AutoFilter Field:=15, Criteria1:="=0"
  Range("N3").FormulaR1C1 = "12/31/2016"
  Range("N3:N37154").FillDown
  Range("N1").Select
End Sub

Si pas ça ton fichier serait utile

Banzai64 a écrit :

Bonjour et bienvenu

Pourquoi effacer si c'est pour écrire après

A tester

Sub test()
  Range("$A$1:$O$37154").AutoFilter Field:=15, Criteria1:="=0"
  Range("N3").FormulaR1C1 = "12/31/2016"
  Range("N3:N37154").FillDown
  Range("N1").Select
End Sub

Si pas ça ton fichier serait utile

Bonsoir Banzai,

Merci de ton aide !

Ca marche mais la macro écrit 31/12/2016 dans toutes les cellules mêmes celles qui ne sont pas sélectionnées par le filtre.

Je veux bien mettre mon fichier mais au risque d'être ridicule, je ne vois pas comment "insérer un fichier"....

Sans vouloir abuser, en plus de ton aide pour ma macro, peux-tu m'expliquer comment joindre un fichier sur le forum ?

Encore merci

Stéphanie

Banzai64 a écrit :

Bonjour et bienvenu

Pourquoi effacer si c'est pour écrire après

A tester

Sub test()
  Range("$A$1:$O$37154").AutoFilter Field:=15, Criteria1:="=0"
  Range("N3").FormulaR1C1 = "12/31/2016"
  Range("N3:N37154").FillDown
  Range("N1").Select
End Sub

Si pas ça ton fichier serait utile

Re bonsoir Banzai,

En fait, cela fonctionne très bien !!! Mille mercis !!

J'ai une dernière question si tu veux bien m'accorder encore un peu de temps.

Voici ma macro complète :

Sub filtredateretard()

'

' Macro2 Macro

'

'

Range("$A$1:$O$37154").AutoFilter Field:=15, Criteria1:="=0"

Range("N3").FormulaR1C1 = "31/12/2016"

Range("N3:N40000").FillDown

Range("N1").Select

If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData

ActiveSheet.Range("$A$1:$P$40000").AutoFilter Field:=12

Range("N1").Select

ActiveSheet.Range("$A$1:$P$40000").AutoFilter Field:=11, Criteria1:="=V*", _

Operator:=xlAnd

ActiveSheet.Range("$A$1:$P$40000").AutoFilter Field:=14, Criteria1:=">" & Range("O1").Value

ActiveSheet.Range("$A$1:$P$40000").AutoFilter Field:=1, Criteria1:="<" & Range("O1").Value, Operator:=xlAnd

ActiveSheet.Range("$A$1:$P$40000").AutoFilter Field:=15, Criteria1:=">30", _

Operator:=xlAnd

ActiveSheet.Range("$A$1:$P$40000").AutoFilter Field:=2, Criteria1:="=" & Range("B15").Value

End Sub

Je dois ajouter un dernier filtre après toutes ces étapes qui correspond à la dernière ligne.

Le problème est que le premier nom du client qui est en B15 après tout les filtres aujourd'hui pourra être en B3 ou autre demain.

Je ne sais pas comment dire de faire un filtre sur le premier nom du client filtré afin de le sélectionner

Il s'agit de faire un filtre sur le premier nom du client qui apparait après toutes les étapes sauf la dernière ligne.

C'est compliqué à expliquer, j'espère être assez claire...

Encore merci!!

Stéphanie

Bonsoir

Stefc69 a écrit :

j'espère être assez claire...

Pour toi sans doute, pour moi pas du tout

Le mieux c'est de joindre ton fichier, dans lequel tu expliques ce que tu veux obtenir (fais un exemple)

A te lire

Banzai64 a écrit :

Bonsoir

Stefc69 a écrit :

j'espère être assez claire...

Pour toi sans doute, pour moi pas du tout

Le mieux c'est de joindre ton fichier, dans lequel tu expliques ce que tu veux obtenir (fais un exemple)

A te lire

Je ne peux pas joindre mon fichier, il est trop gros.

Je peux te l'envoyer par mail ou ne laisser que 30 lignes sur un fichier test ?

Bonjour

Tu as pensé à le compresser ?

Tu as la possibilité de le joindre par cjoint http://cjoint.com/index.php

c joint

Sinon tu réduis le nombre de données, mais surtout tu détailles bien les actions à faire et ce que tu dois obtenir

Rechercher des sujets similaires à "enregistrer date recopier filtrees"