[EDIT] Optimisation d'une maccro.

Okedekpe

XLDnaute Nouveau
Bonjour à tous,

Grace au nombreux posts sur le forum et sur la toile, je viens de réaliser un premier projet. :cool:

Malheureusement, j'ai encore 2 petits soucis que je n'arrive pas à solutionner
Tout d'abord, au niveau de la mise en page, je n'arrive pas à aligner les valeurs de l'onglet2 de mon fichier recap, et ceux malgré ce code qui à l'aire de fonctionner sur d'autres onglets...

Code:
Columns("B:B").Select
   With Selection
        .Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        .NumberFormat = "0.00"
        .HorizontalAlignment = xlRight

Sinon, un problème qui n'en est pas vraiment un, la maccro est lente. Je sais que le nombre d'actions est important, mais n'y a t'il pas un moyen d'alléger ce code?

Code:
Sub C_est_parti()

Dim Chemin As String
Dim Fichier As String
Dim i As Long
Dim j As Byte
Dim debut
Dim Recap As Workbook
Dim Instrument As Workbook

Set Recap = ThisWorkbook

Application.DisplayAlerts = False
Application.ScreenUpdating = False

Chemin = "Z:\General\A.....\Documents\Dossier P&L\"
Fichier = Dir(Chemin & "*.xlsx*")

Dim W As Worksheet
For Each W In ActiveWorkbook.Worksheets
If W.Name = "Recap" Then
Else: W.Delete
End If
Next W


Do While Fichier <> ""

For j = 2 To 23 ' Sheets.Count

Workbooks.Open Filename:=Chemin & Fichier
Set Instrument = ActiveWorkbook
Recap.Activate
Recap.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Instrument.Sheets(1).Name


Instrument.Activate
Dim d As Date
    Columns("B:B").Select
   With Selection
        .Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        .NumberFormat = "0.00"
        .HorizontalAlignment = xlRight

d = #12/14/2007#
Set debut = [A:A].Find(What:=d, LookIn:=xlValues)
If Not debut Is Nothing Then Range(debut, debut.End(xlDown).Offset(, 1)).Copy
Recap.Activate
Sheets(j).Range("A1").Select
ActiveSheet.Paste

Application.Calculation = xlCalculationManual
[A1].Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess
i = 1
Do While Cells(i, 1) <> ""
If Cells(i, 1) = Cells(i + 1, 1) Then Rows(i).Delete Else i = i + 1
Loop
Application.Calculation = xlCalculationAutomatic


Instrument.Close SaveChanges:=False

Fichier = Dir
Next j
Loop
Application.DisplayAlerts = True
Application.ScreenUpdating = True

End Sub

Merci d'avance
Amicalement.
Okedekpe.

Edit: j'ai finalement trouvé que je titre n'etait pas très approprié...
 

Pièces jointes

  • Test.xlsx
    242.6 KB · Affichages: 50
  • Test.xlsx
    242.6 KB · Affichages: 49
  • Test.xlsx
    242.6 KB · Affichages: 51
  • Recap.xlsm
    43.5 KB · Affichages: 49
  • Recap.xlsm
    43.5 KB · Affichages: 44
  • Recap.xlsm
    43.5 KB · Affichages: 46
Dernière édition:
C

Compte Supprimé 979

Guest
Re : [EDIT] Optimisation d'une maccro.

Salut Okedekpe,

Pour la première question, essaye ceci
Code:
      With Columns("B:B")
        ' Supprimer les espaces
        .Replace What:=" ", Replacement:="", LookAt:=xlPart, _
                 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                 ReplaceFormat:=False
 
        .Replace What:=".", Replacement:=",", LookAt:=xlPart, _
                 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                 ReplaceFormat:=False
        .NumberFormat = "0.00"
        .HorizontalAlignment = xlRight

Pour la seconde, ça me parait difficile ;)

A+
 
Dernière modification par un modérateur:

Bebere

XLDnaute Barbatruc
Re : [EDIT] Optimisation d'une maccro.

bonjour okedekpe
le code est fait pour un fichier
à changer, chemin et fichier
à bientôt
 

Pièces jointes

  • recap.xls
    53 KB · Affichages: 31
  • recap.xls
    53 KB · Affichages: 32
  • recap.xls
    53 KB · Affichages: 33

Okedekpe

XLDnaute Nouveau
Re : [EDIT] Optimisation d'une maccro.

Salut le forum, Bebere, Bruno.

Merci beaucoup pour vos réponses, je n'ai pas eu le temps de tester encore, je reviendrai poster le résultat!

Bruno, je vois que tu utilises l'application (? je ne sais pas si ça s'appelle comme ça :) ) dictionnary pour les doublons, comme me l'avait proposé Boisgontier que je remercie au passage, je ne l'avais pas utilisé car pas comprise.
Cette solution pour supprimer les doublons est elle vraiment plus efficace que l'autre ?

Bonne journée.
Amicalement
Okedekpe.

Ps: Je n'ai pas découvert ce forum il y a longtemps mais j'en suis déjà pleinement satisfait ! Merci à tous ceux qui prennent de leur temps pour nous filer un (des gros !! ) coup de main !
 

Okedekpe

XLDnaute Nouveau
Re : [EDIT] Optimisation d'une maccro.

Salut la compagnie,

J'ai eu quelques minutes pour tester les modifs,

Bruno ton code ajoute des virgules avant et après le nombre: " ,979,5,,,,,, "
C'est pas exactement ce que j'esperais ! :)

Bebere, j'ai modifié mon code en m'axant sur le tien , il fonctionne mais encore plus lentement, mais il me semble que j'ai fait une bétise sur une boucle. Je me creuse un peu les méninges voir si j'ai pas fait une boulette.
Sinon tanpis pour moi je le laisse tel quel, pas très propre et un peu long mais bon...

En tout cas merci d'avoir pris le temps de répondre!

A bientôt.
Okedekpe.
 
C

Compte Supprimé 979

Guest
Re : [EDIT] Optimisation d'une maccro.

Salut,

Je ne sais pas pourquoi la virgule traine dans mon code !?

Mais avec un minimum de reflexion, je pense que tu as dû trouver
Code:
.Replace What:=" ", Replacement:="""

A+
 

flyonets44

XLDnaute Occasionnel
Re : [EDIT] Optimisation d'une maccro.

Bonjour
pour ta seconde macro remplace la suppression de ligne
par l'inscription d'un flag en colonne 2, puis tu filtres sur le flag
et tu supprimes les filtrées, c'est bien + rapide
Cordialement
flyonets
 

Discussions similaires

Statistiques des forums

Discussions
312 472
Messages
2 088 712
Membres
103 930
dernier inscrit
Jibo