debogage d'une macro

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 !

lacastille

XLDnaute Nouveau
Bonjour je suis nouveau dans ce forum. j'ai le meme probleme et avec l'aide d'un ami j'ai pu mettre en place une macro de calcul des heures de connections et deconnection des utilisateurs. cependant lors de la compilation,un message d'erreur de synthaxe s'affiche.
je voudrai par le meme occasion inserer le code d'importation d'un groupe de fichier .txt que vous avez publiez mais comment?
voici mon code VBA qui a du mal a s'executer, merci de votre aide

Citation:
Envoyé par lacastille Voir le message
Sub maMacro()

' maMacro Macro
' Macro enregistr

Dim tab1() As String
Dim tab2() As String
Dim i As Integer
Dim J As Integer
Dim K As Integer
Dim L As Integer
Dim tmp1 As Integer
Dim tmp2 As Integer
Dim duree As Integer
Dim total As Integer
Dim appEx As Excel.Application
Dim wbEx As Excel.Workbook 'classeur
Dim wsEx As Excel.Worksheet ' Feuille

' initialisation
total = 0

' ouverture
Set appEx = CreateObject("Excel.Application")
Workbooks.OpenText Filename:="C:\Documents and Settings\stage2\Bureau\Copie de 2009test\04\Ordinateurs\MSa350p3.txt", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
Set wbEx = appExcel.ActiveWorkbook
Set wsEx = wbEx.ActiveSheet

'parcours du fichier excel par ligne afin de supprimer les lignes avec un D au debut, C en fin de Fichier, et tous les autes cas

i = 1
While Not Range("L" & i & "").Value = ""
if( Range("L" & i & "").value = "D" and (i mod 2 ) = 0)
Rows(i & ":" & i).Delete xlUp 'suppression de la ligne
End If
if( Range("L" & i & "").value ="C" and (i mod 2 ) <> 0)
Rows(i & ":" & i).Delete xlUp 'suppression de la ligne end if
End If
i = i + 1
Wend

' calcul des heures de connexion

For(j=1 to (i-1))
tab1 = Split(Range("J" $ j $ "").value, ":")
tab2= Split(Range("J" $ (j+1) $ "").value, ":")
tmp1= (val(tab1[0])*3600) + (val(tab1[1])*60) + (val(tab1[0])*60) +val(tab1[2])
tmp2= (val(tab2[0])*3600) + (val(tab2[1])*60) + (val(tab2[0])*60) +val(tab2[2])
duree = temp2 - temp1

If(duree >0)
' conversion du temps au bon format
J = duree Mod 3600
K = duree / 3600
L = J / 60
m = J Mod 60

Range("M" $ (j+1) $ "").value = k & ":" & l ":" & m
End If
Next

' calcul du total de la durée

For(j=1 to i)
If(Range("M" $ j $ "").value <> "" )
total = total + Range("M" $ j $ "").value
End If
Next

' range le total dans la cellule i+1
Range("M" $ i+1 $ "").value = total

'sauvegarde du fichier excel
wbEx.SaveAs Filename = "C:\nomFichier.xls", FileFormat:=xlNormal


End Sub
 
Re : debogage d'une macro

Bonjour

Il est toujours difficile de débugger une macro sans son environnement.
Généralement la ligne qui a provoqué l'erreur est surligné en jaune.
Il existe une commande du menu "Débogage" qui recherche les erreurs "compilerVBA project"
Une première remarque un index le ligne doit obligatoirement de type long, un entier varie de 32 768 et 32 767.
L'écriture pour Range("L" & i & "") peut se résumer à Range("L" & i )
Celle ci me semble curieuse tab1 = Split(Range("J" $ j $ "").value, ":"), il doit manquer le symbole &.

JP
 
- 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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
252
Réponses
3
Affichages
49
Réponses
4
Affichages
363
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
504
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
80
Retour