Optimisation de code

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Dernière édition:
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:
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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
363
Retour