LuNatik
-
Modifié par crapoulou le 27/04/2016 à 09:45
LuNatik -
27 avril 2016 à 10:47
Bonjour,
Je débute en VBA, et je me retrouve confronté au message de debogage code 13 sur mon fichier alors qu'il fonctionnait encore hier. Pouvez-vous m'aider à déterminer la cause du problème svp ?
Je link mon code, avec la ligne 38 en erreur (qui est surligné en jaune dans mon code): If Sheets("astreinte").Cells(lig, col).Value Like "AST" Then
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Modification de la semaine?
If Target.Address = Sheets("recap_astreinte").Cells(2, 2).Address Then
Dim col As Integer
Dim nom As String
'Effaçage des données du fichier recap_astreinte
For k = 13 To 52
Sheets("recap_astreinte").Cells(k, 3) = ""
Sheets("recap_astreinte").Cells(k, 4) = ""
Sheets("recap_astreinte").Cells(k, 5) = ""
Next k
'Effaçage des données du fichier recap_astreinte
For k = 54 To 79
Sheets("recap_astreinte").Cells(k, 3) = ""
Sheets("recap_astreinte").Cells(k, 4) = ""
Sheets("recap_astreinte").Cells(k, 5) = ""
Next k
'Récupération du numéro de la semaine
semaine = Sheets("recap_astreinte").Cells(2, 2).Value
'Calcul de l'indice de la colonne associée
col = (semaine - 1) * 12 + 3
'Indice de la colonne pour la semaine (n+1)
colp = col + 12
'Recherche des astreintes pour la semaine n
For lig = 7 To 400
'Si la Case contient "AST"
If Sheets("astreinte").Cells(lig, col).Value Like "AST" Then
'Récupération du nom et du numéro de téléphone
nom = Sheets("astreinte").Cells(lig, 2)
tel = Sheets("astreinte").Cells(lig, 3)
'Récupération du secteur associé
emplacement = lieu(lig)
'Recherche du secteur dans le fichier recap_astreinte
For j = 13 To 79
a1 = Sheets("recap_astreinte").Cells(j, 1).Value
'Si les secteurs coïncident
If UCase(a1) Like emplacement Then
'Si aucun nom dans le secteur, on l'insère
If Sheets("recap_astreinte").Cells(j, 3) = "" Then
Sheets("recap_astreinte").Cells(j, 3) = nom
Else
'Sinon, tant que l'espace contient un nom, on décale d'une ligne
test = j + 1
While Sheets("recap_astreinte").Cells(test, 3) <> ""
test = test + 1
Wend
'On place le nom dans la ligne disponible
Sheets("recap_astreinte").Cells(test, 3) = nom
End If
'Idem pour le numéro de téléphone
If Sheets("recap_astreinte").Cells(j, 4) = "" Then
Sheets("recap_astreinte").Cells(j, 4) = tel
Else
test = j + 1
While Sheets("recap_astreinte").Cells(test, 4) <> ""
test = test + 1
Wend
Sheets("recap_astreinte").Cells(test, 4) = tel
End If
End If
Next j
End If
'On réitère pour la semaine (n+1)
If Sheets("astreinte").Cells(lig, colp).Value Like "AST" Then
nomp = Sheets("astreinte").Cells(lig, 2)
emplacementp = lieu(lig)
For j = 13 To 79
a1 = Sheets("recap_astreinte").Cells(j, 1).Value
If UCase(a1) Like emplacementp Then
'On place le nom en 5ème colonne
If Sheets("recap_astreinte").Cells(j, 5) = "" Then
Sheets("recap_astreinte").Cells(j, 5) = nomp
Else
test = j + 1
While Sheets("recap_astreinte").Cells(test, 5) <> ""
test = test + 1
Wend
Sheets("recap_astreinte").Cells(test, 5) = nomp
End If
End If
Next j
End If
Next lig
End If
End Sub
J'ai réussi à trouver le problème qui provenait d'une manipulation des exploitants sur les fichiers sources alimentant mon document et non un problème de VBA ! Merci quand même.