Comment réduire mon temps machine en diminuant mon programme
kobejul08
Messages postés113Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention 3 octobre 2005
-
24 août 2005 à 17:26
kobejul08
Messages postés113Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention 3 octobre 2005
-
25 août 2005 à 17:19
Bonjour ,
voici un petit programme vb6 qui ouvre un fichier excel et qui copie les lignes de ce fichier excel dans un autre en splitant la date si qq un a une suggestion ça serait super pour réduire le temps vu qu'il y a 2500 lignes a exporter d'un fichier a l'autre et essayer de réduire les ''end if'' Merci
Public monxl As Excel.Application
Public monxl2 As Excel.Application
Public monxl3 As Excel.Application
Public modeCreation As Boolean
Sub Main()
Set monxl = New Excel.Application
Set monxl2 = New Excel.Application
Set monxl3 = New Excel.Application
If monxl.Cells(i, 3).Value = "" Then
Exit For
Else
End If
If monxl.Cells(i, 3).Value = 1 Then
monxl.Cells(i, 3) = "janvier"
End If
If monxl.Cells(i, 3).Value = 2 Then
monxl.Cells(i, 3) = "février"
End If
If monxl.Cells(i, 3).Value = 3 Then
monxl.Cells(i, 3) = "mars"
End If
If monxl.Cells(i, 3).Value = 4 Then
monxl.Cells(i, 3) = "avril"
End If
If monxl.Cells(i, 3).Value = 5 Then
monxl.Cells(i, 3) = "mai"
End If
If monxl.Cells(i, 3).Value = 6 Then
monxl.Cells(i, 3) = "juin"
End If
If monxl.Cells(i, 3).Value = 7 Then
monxl.Cells(i, 3) = "juillet"
End If
If monxl.Cells(i, 3).Value = 8 Then
monxl.Cells(i, 3) = "août"
End If
If monxl.Cells(i, 3).Value = 9 Then
monxl.Cells(i, 3) = "septembre"
End If
If monxl.Cells(i, 3).Value = 10 Then
monxl.Cells(i, 3) = "octobre"
End If
If monxl.Cells(i, 3).Value = 11 Then
monxl.Cells(i, 3) = "novembre"
End If
If monxl.Cells(i, 3).Value = 12 Then
monxl.Cells(i, 3) = "décembre"
End If
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 24 août 2005 à 18:03
tu peux utiliser la syntaxe CASE pour remplacer ta serie de IF...
exemple
select case monxl.Cells(i, 3).Value
case is 1 :
monxl.Cells(i, 3) = "janvier"
case is 2 :
monxl.Cells(i, 3) = "février"
...
case else
'gestion d'erreur : mois non reconnu
end select
je pense que ca sera plus rapide et plus lisible, mais vu que ca n'est pas dans une boucle, je pense que le gain de temps ne sera pas enorme.
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 25 août 2005 à 11:30
pkoi veux tu faire une boucle.
a quel endroit ?
personnellement au lieu de copier cellule par celluel comme tu le fais, j'aurai copié la ligne entiére, pour ensuite travailler sur les cellules a modifier.
kobejul08
Messages postés113Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention 3 octobre 2005 25 août 2005 à 13:08
i = i + 1
non il fait chaque fois plus 1
et si tu as une meilleur idée pour la fluidité dis le moi
ou explique sur quelle base partir je parle de code là!!
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 25 août 2005 à 16:15
autant pour moi je n'avais pas vu que la deuxieme boucle allait jusqu'a la fin :)
donc effectivement, je pense que ce qui peut etre long c de swapper d'un fichier a l'autre a chaque fois et de copier cellule par cellule
moi je serait toi, je ferai ca :
1 - recherhe de la premiere ligne ou copier les info dans le classeur cible
2 - recherche de la plage de cellule a copier dans le classeur source
3 - copie de toute la plage d'un seul coup
4 - boucle de traitement des cellules contenant des dates dans le classeur cible.
en copiant tou d'un seul tu va gagner bcp de temps