Programme qui rame
Bonjour,
Je débute sur Visual Basic depuis deux semaines.
J'essaye de créer une macro pour traiter des données.
Sur mon classeur excel, j'ai un onglet export avec plusieurs colonnes de données correspondant à l'enregistrement d'un process.
Dans ma colonne B de l'onglet Export, il s'agit de dates. (jj:mm:aaaa hh:m:ss)
Pour mon traitement de données, j'ai besoin de raisonner avec des heures de fonctionnement.
Or il y a eu un arret sur mon process.
Connaisant la date de reprise du process, j'ai pu repérér l'indice de la ligne correspondant à la date de reprise.
Je voudrais donc dans une nouvelle colonne, créer une matrice d'heure.
Voilà ce que j'ai codé et qui met un temps interminable à se faire:
Sub test()
Worksheets("Export").Activate
'Definition de la plage de ligne à traiter
LigneStart = 8
ligneEnd = Worksheets("Export").Range("A65536").End(xlUp).Offset(1, 0).Row
'''''''''''' Création de la matrice heure
k = Worksheets("Compil").Range("C32") 'indice de la ligne correspondant à la première date après le shutdown
For i = LigneStart To k
Range("AA" & i) = Range("B" & i) - Range("B8") ' avant coupure
Next i
For i = k To ligneEnd
Range("AA" & i) = Range("B" & i) - Range("B8") - (Range("B" & k) - Range("B" & (k - 1))) 'après coupure
Next i
End SubSi quelqu'un peut m'aiguiller sur ce qui ne va pas dans mon code et qui fait ramer la macro ce serait super.
Le code se fait, j'ai "testé" avec F8 sur quelques lignes.
Merci d'avance
Bonjour
A 1ère vue cela devrait tourner rapidement
A vérifier si tu as d'autres macros (Fonctions personnalisées), beaucoup de formules dans tes pages
Tu peux modifier ta macro
Suppression du rafraichissement de l'affichage
Mode de calcul en manuel : remis en automatique à la fin
Blocage des évènements : Remis à la fin
Sub test()
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
Worksheets("Export").Activate
'Definition de la plage de ligne à traiter
LigneStart = 8
ligneEnd = Worksheets("Export").Range("A65536").End(xlUp).Offset(1, 0).Row
'''''''''''' Création de la matrice heure
k = Worksheets("Compil").Range("C32") 'indice de la ligne correspondant à la première date après le shutdown
For i = LigneStart To k
Range("AA" & i) = Range("B" & i) - Range("B8") ' avant coupure
Next i
For i = k To ligneEnd
Range("AA" & i) = Range("B" & i) - Range("B8") - (Range("B" & k) - Range("B" & (k - 1))) 'après coupure
Next i
With Application
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End SubSi cela ne suffit pas, ton fichier en cause est indispensable
Super, je viens de tester et ça tourne normalement
Merci beaucoup !!!