Optimisation de code

romainchu78

XLDnaute Occasionnel
Bonjour a tout le forum: J'ai mis au point une macro permettant de formater toutes les cellules d'une colonne permettant d'avoir au final une date et une heure au format officielle. Ma macro efface toutes les chaines de caracteres parasytes au sein d'une colonne de donnees.
La colonne D contient toutes les chaines de caracteres parasitent qui doivent etre efface depuis la colonne B.
La colonne B contient une date et heure mais aussi une chaine de caracteres (qui doit etre efface).
Pour faire ma macro, j'ai utilise la fonction find and replace d'excel.
Le probleme c'est que c'est tres couteux en temps de traitement car jai plus de 500 noms dans la colonne D et plus de 20000 lignes dans la colonne B, d'apres mes calcules il faudrait plus de 10 heures pour tout compiler. comment faire pour optimiser le code? Deplus peut etre qu'il y a une autre facon d'arriver au resultat final?
J'ai mis un fichier en exemple. Merci.
 

Pièces jointes

  • optimisation.zip
    13.2 KB · Affichages: 27
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Optimisation de code

Salut Romainchu78,

Sachant que ce que tu veux changer ce sont les dates + heures en supprimant les noms à la fin.

Il suffit de rechercher dans chaque ligne si il existe le signe ":" qui représente la séparation des heures et minutes.

Regarde ce code :
Code:
Sub Remplace()
  Dim Cel As Range, Derlig As Long, Pos As Integer
  [COLOR=green]' récupère la dernière ligne remplie de la feuille[/COLOR]
  Derlig = Range("B" & Rows.Count).End(xlUp).Row
  [COLOR=green]' Pour chaque cellule de la ligne 2 à DerLig dans la colonne B[/COLOR]
  For Each Cel In Range("B2:B" & Derlig)
    [COLOR=green]' Récupère la position du DEUX POINT, si existe[/COLOR]
    Pos = InStr(1, Cel, ":")
    If Pos > 0 Then
      [COLOR=green]' Si[/COLOR][COLOR=green] existe, on formate la cellule correctement[/COLOR]
[COLOR=green]      ' En ne prenant que la partie gauche jusqu'au 2 points + 2 caractères[/COLOR]
      Cel = Left(Cel, Pos + 2)
    End If
 [COLOR=green] ' Et ainsi de suite[/COLOR]
  Next Cel
End Sub

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

Compte Supprimé 979

Guest
Re : Optimisation de code

Tu es un dieux vivant.
Oui, oui, je sais
king.gif


Nooon, je décoooonnnneeee
minibebe.gif


tu vient de me faire economiser 10 heures de compil ! mais comment ton code fonctionne je ne le comprend pas?
J'ai remis l'explication dans mon code post du dessus

Voili, voilà ;)

A+
 

Discussions similaires

Réponses
11
Affichages
556

Membres actuellement en ligne

Statistiques des forums

Discussions
312 520
Messages
2 089 298
Membres
104 092
dernier inscrit
karbone57