Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

arrêt non désirer d'une macro

2 réponses
Avatar
hymotep
Bonjour
voici une macro qui s'arrête toute seul sans qu'on lui demande.
pour analyser le dysfonctionnement j'ai utiliser le mode pas à pas
A un certain moment la flèche, qui suis le déroulement de la macro,
disparaît et la macro s'arrête comme cela et sans message d'erreur
je ne trouve pas de cas similaire sur la toile (ni dans ce forum) donc je
vous l’expose.

La macro s’arrete sur cette ligne (aprés 'test 7 valeurs consécutives
croissantes décroissantes)

Set vala = Cells(49, ColDebut).Value

J’ai essayé:
Avec et sans “set”
Changer la variable « vala »en « range »
Vala.value= Cells(49, ColDebut).Value

Cela ne change rien

Si vous avez une idée de l’origine du problème, merci


voici le code que j'utilise (merci a ceux qui m'ont déjà aidé pour d'écrire
cela)



Option Explicit

Public Sub Gestionmsp()

'On Error GoTo fin

Dim Cellule As Range
Dim colfin As Integer ' Colonne de fin Moyenne
Dim ColDebut As Integer ' Colonne de début Moyenne
Dim valb As Range
Dim vala As Variant
Dim Ctrcroissant As Integer
Dim Ctrdecroissant As Integer
Dim Res
Dim Ctrinfmoy As Single
Dim Ctrsupmoy As Single
Dim ColFinEtend As Integer

' col de fin = premier chgt d'état (à partir de col A) de Cell à Cell+1
' sur Ligne

colfin = Range("A49").End(xlToRight).Column
ColFinEtend = Range("A50").End(xlToRight).Column

Application.EnableEvents = False



' si pas encore 7 valeurs alors pas de test

If colfin < 8 Then
GoTo Etendue
Else
' On calcule la première colonne

ColDebut = colfin - 6

' valeur de départ

Ctrdecroissant = 1
Ctrcroissant = 1
Ctrinfmoy = 0
Ctrsupmoy = 0

'test 7 valeurs consécutives croissantes décroissantes
Set vala = Cells(49, ColDebut).Value
For Each valb In Range(Cells(49, ColDebut + 1), Cells(49, colfin))
If valb.Value > vala Then
Ctrcroissant = Ctrcroissant + 1
Ctrdecroissant = 1
Else
Ctrcroissant = 1
Ctrdecroissant = Ctrdecroissant + 1
End If
vala = valb.Value
Next valb

If Ctrcroissant = 7 Then
Application.ScreenUpdating = True
MsgBox "7 Valeurs Consécutives de la Moyenne Croissantes",
vbExclamation, "Moyenne"
Application.ScreenUpdating = False
Range(Cells(49, ColDebut), Cells(49, colfin)).Interior.ColorIndex = 39
Ctrcroissant = 1
notealertes
End If
If Ctrdecroissant = 7 Then
Application.ScreenUpdating = True
MsgBox "7 Valeurs Consécutives de la Moyenne Décroissantes",
vbExclamation, "Moyenne"
Application.ScreenUpdating = False
Range(Cells(49, ColDebut), Cells(49, colfin)).Interior.ColorIndex = 39
Ctrdecroissant = 1
notealertes
End If

fin:
Application.EnableEvents = True
End If
End Sub



--
"vas dont savoir quand tu sais pas" Coluche

2 réponses

Avatar
Daniel.C
Bonsoir.
Cela arrive quelques fois. Si vala est de type variant, la syntaxe est :
vala = Cells(49, ColDebut).Value
Es-tu sûr de ne pas débrancher sur fin: ? Pour plus de sureté, commente la
ligne On error...
Essaie de mettre "Option Explicit" en tête de module. Cela provoque parfois
le message d'erreur.
Cordialement.
Daniel
"hymotep" a écrit dans le message de
news:
Bonjour
voici une macro qui s'arrête toute seul sans qu'on lui demande.
pour analyser le dysfonctionnement j'ai utiliser le mode pas à pas
A un certain moment la flèche, qui suis le déroulement de la macro,
disparaît et la macro s'arrête comme cela et sans message d'erreur
je ne trouve pas de cas similaire sur la toile (ni dans ce forum) donc je
vous l'expose.

La macro s'arrete sur cette ligne (aprés 'test 7 valeurs consécutives
croissantes décroissantes)

Set vala = Cells(49, ColDebut).Value

J'ai essayé:
Avec et sans "set"
Changer la variable « vala »en « range »
Vala.value= Cells(49, ColDebut).Value

Cela ne change rien

Si vous avez une idée de l'origine du problème, merci


voici le code que j'utilise (merci a ceux qui m'ont déjà aidé pour
d'écrire
cela)



Option Explicit

Public Sub Gestionmsp()

'On Error GoTo fin

Dim Cellule As Range
Dim colfin As Integer ' Colonne de fin Moyenne
Dim ColDebut As Integer ' Colonne de début Moyenne
Dim valb As Range
Dim vala As Variant
Dim Ctrcroissant As Integer
Dim Ctrdecroissant As Integer
Dim Res
Dim Ctrinfmoy As Single
Dim Ctrsupmoy As Single
Dim ColFinEtend As Integer

' col de fin = premier chgt d'état (à partir de col A) de Cell à Cell+1
' sur Ligne

colfin = Range("A49").End(xlToRight).Column
ColFinEtend = Range("A50").End(xlToRight).Column

Application.EnableEvents = False



' si pas encore 7 valeurs alors pas de test

If colfin < 8 Then
GoTo Etendue
Else
' On calcule la première colonne

ColDebut = colfin - 6

' valeur de départ

Ctrdecroissant = 1
Ctrcroissant = 1
Ctrinfmoy = 0
Ctrsupmoy = 0

'test 7 valeurs consécutives croissantes décroissantes
Set vala = Cells(49, ColDebut).Value
For Each valb In Range(Cells(49, ColDebut + 1), Cells(49, colfin))
If valb.Value > vala Then
Ctrcroissant = Ctrcroissant + 1
Ctrdecroissant = 1
Else
Ctrcroissant = 1
Ctrdecroissant = Ctrdecroissant + 1
End If
vala = valb.Value
Next valb

If Ctrcroissant = 7 Then
Application.ScreenUpdating = True
MsgBox "7 Valeurs Consécutives de la Moyenne Croissantes",
vbExclamation, "Moyenne"
Application.ScreenUpdating = False
Range(Cells(49, ColDebut), Cells(49, colfin)).Interior.ColorIndex =
39
Ctrcroissant = 1
notealertes
End If
If Ctrdecroissant = 7 Then
Application.ScreenUpdating = True
MsgBox "7 Valeurs Consécutives de la Moyenne Décroissantes",
vbExclamation, "Moyenne"
Application.ScreenUpdating = False
Range(Cells(49, ColDebut), Cells(49, colfin)).Interior.ColorIndex =
39
Ctrdecroissant = 1
notealertes
End If

fin:
Application.EnableEvents = True
End If
End Sub



--
"vas dont savoir quand tu sais pas" Coluche


Avatar
hymotep
bonjour daniel.C
merci pour la reponse
j'ai essayer au depart la version

dim vala as range
vala.value = Cells(49, ColDebut).Value

puis

dim vala as variant
vala= Cells(49, ColDebut).Value

puis

dim vala as variant
set vala= Cells(49, ColDebut).Value

la macro a toujours buté sur cette ligne en arrétant l'execution de la macro
et cela sans message d'erreur (même avec option explicit)

j'ai ensuite recopier la macro dans un autre fichier = même punition

par contre si j'inverse l'égalité la macro défile bien
Cells(49, ColDebut).Value=vala
mais le résultat n'est pas celui souhaité

c'est un mystere pour moi (novice) mais pour vous ????
cordialement
--
"vas dont savoir quand tu sais pas" Coluche



Bonsoir.
Cela arrive quelques fois. Si vala est de type variant, la syntaxe est :
vala = Cells(49, ColDebut).Value
Es-tu sûr de ne pas débrancher sur fin: ? Pour plus de sureté, commente la
ligne On error...
Essaie de mettre "Option Explicit" en tête de module. Cela provoque parfois
le message d'erreur.
Cordialement.
Daniel
"hymotep" a écrit dans le message de
news:
Bonjour
voici une macro qui s'arrête toute seul sans qu'on lui demande.
pour analyser le dysfonctionnement j'ai utiliser le mode pas à pas
A un certain moment la flèche, qui suis le déroulement de la macro,
disparaît et la macro s'arrête comme cela et sans message d'erreur
je ne trouve pas de cas similaire sur la toile (ni dans ce forum) donc je
vous l'expose.

La macro s'arrete sur cette ligne (aprés 'test 7 valeurs consécutives
croissantes décroissantes)

Set vala = Cells(49, ColDebut).Value

J'ai essayé:
Avec et sans "set"
Changer la variable « vala »en « range »
Vala.value= Cells(49, ColDebut).Value

Cela ne change rien

Si vous avez une idée de l'origine du problème, merci


voici le code que j'utilise (merci a ceux qui m'ont déjà aidé pour
d'écrire
cela)



Option Explicit

Public Sub Gestionmsp()

'On Error GoTo fin

Dim Cellule As Range
Dim colfin As Integer ' Colonne de fin Moyenne
Dim ColDebut As Integer ' Colonne de début Moyenne
Dim valb As Range
Dim vala As Variant
Dim Ctrcroissant As Integer
Dim Ctrdecroissant As Integer
Dim Res
Dim Ctrinfmoy As Single
Dim Ctrsupmoy As Single
Dim ColFinEtend As Integer

' col de fin = premier chgt d'état (à partir de col A) de Cell à Cell+1
' sur Ligne

colfin = Range("A49").End(xlToRight).Column
ColFinEtend = Range("A50").End(xlToRight).Column

Application.EnableEvents = False



' si pas encore 7 valeurs alors pas de test

If colfin < 8 Then
GoTo Etendue
Else
' On calcule la première colonne

ColDebut = colfin - 6

' valeur de départ

Ctrdecroissant = 1
Ctrcroissant = 1
Ctrinfmoy = 0
Ctrsupmoy = 0

'test 7 valeurs consécutives croissantes décroissantes
Set vala = Cells(49, ColDebut).Value
For Each valb In Range(Cells(49, ColDebut + 1), Cells(49, colfin))
If valb.Value > vala Then
Ctrcroissant = Ctrcroissant + 1
Ctrdecroissant = 1
Else
Ctrcroissant = 1
Ctrdecroissant = Ctrdecroissant + 1
End If
vala = valb.Value
Next valb

If Ctrcroissant = 7 Then
Application.ScreenUpdating = True
MsgBox "7 Valeurs Consécutives de la Moyenne Croissantes",
vbExclamation, "Moyenne"
Application.ScreenUpdating = False
Range(Cells(49, ColDebut), Cells(49, colfin)).Interior.ColorIndex =
39
Ctrcroissant = 1
notealertes
End If
If Ctrdecroissant = 7 Then
Application.ScreenUpdating = True
MsgBox "7 Valeurs Consécutives de la Moyenne Décroissantes",
vbExclamation, "Moyenne"
Application.ScreenUpdating = False
Range(Cells(49, ColDebut), Cells(49, colfin)).Interior.ColorIndex =
39
Ctrdecroissant = 1
notealertes
End If

fin:
Application.EnableEvents = True
End If
End Sub



--
"vas dont savoir quand tu sais pas" Coluche