Erreur la méthode Value de l'objet Range a échoué

Bonjour,

En A1, j'ai une liste déroulante avec comme choix "Non affecté", "Pris en charge", "Affectation manuelle", "Clôturé".
En B1, j'ai une liste déroulante avec comme choix "Julien DUPON", "André DURANT", "Marie PIERRE".

Je souhaite que lorsqu'un utilisateur (fichier utilisé en partage collaboratif) modifie la cellule A1, il se passe quelque chose en B1.
Et inversement, que lorsqu'un utilisateur modifie la cellule en B1, il se passe quelque chose en A1.

Le problème que j'ai ai qu'on a vite fait de tourner en rond avec ma macro car chaque cellule modifiant l'autre entraîne une boucle...

J'ai donc essayé de verrouiller mon besoin à savoir :
- Si en A1 la modification apportée est "Non affecté" alors ne rien mettre en B
Sinon si en A1 c'est autre chose que "Non affecté" alors mettre le nom de l'utilisateur en cours (récupéré via Application.Username) en B2.
- Si en B1 le modification est apportée mais qu'en A1 c'est "Affectation manuelle" alors s'arrêter
Sinon si en B1 une modification est apportée et qu'en A1 c'est différent de "Affectation manuelle" alors si le nom de l'utilisateur choisi dans la liste déroulante de B1 est identique au Application.Username dans ce cas mettre A1 en "Pris en charge" sinon ne rien faire.

Avec la macro suivant j'ai 90% des situations qui fonctionne et uniquement une qui me fait planter la macro : si en B1 je mets la modification de B1 = mon Application.Username, j'ai un message d'erreur "Erreur la méthode Value de l'objet Range a échoué".

image

Il semblerait que l'erreur soit causé par cette ligne précisément car quand je l'enlève tout le reste de la macro fonctionne parfaitement bien :
=> If Range("B1").Value = Application.UserName Then

Quelqu'un aurait-il une idée de mon erreur et comment la résoudre ?

Merci d'avance pour votre aide :)

Aurélien

VOICI MA MACRO :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim UserName_1 As String
UserName_1 = Application.UserName
Sheets("Feuil1").Activate

Set isect = Application.Intersect(Target, Range("A:A"))
If isect Is Nothing Then
'MsgBox "Ranges do not interse

ct"
Else
'MsgBox "test"
If Range("A1").Value = "Affectation manuelle" Then Exit Sub
If Range("A1").Value = "Non affecté" Then
Range("B1").Value = ""
GoTo Fin
End If

Range("B1").Value = Application.UserName
isect.Select
End If

Set isect = Application.Intersect(Target, Range("B:B"))
If isect Is Nothing Then
'MsgBox "Ranges do not intersect"
Else
'MsgBox "test"
If Range("B1").Value = "" Then GoTo Fin
If Range("B1").Value = Application.UserName Then
End If
GoTo Suite
End If

If Range("B1").Value <> UserName_1 Then
Range("A1").Value = "Affectation manuelle"
isect.Select
GoTo Fin
Suite:
Range("A1").Value = "Pris en charge"
isect.Select
GoTo Fin
End If

Fin:

End Sub

Salut, si tu utilise Application.EnableEvents = False au début puis Application.EnableEvents = Trueà la fin du code.

T'as macro ne devrais plus tourner en boucle lorsqu'elle modifie elle même ses déclencheurs, à tester

A+

Bonjour,

Si le souci c'est qu'à chaque fois la modification de la cellule appelle à nouveau l'évènement, pourquoi ne pas utiliser cette commande?

Application.EnableEvents = False

Elle a pour effet de désactiver une bonne partie des évènements de l'application, et donc le lancement de la macro pendant la modification, il faut juste réactiver les évènements une fois les étapes qui ne doivent pas en lancer passées avec:

Application.EnableEvents = True

et pour ce qui est du message d'erreur je rajouterai que Range("B2").Value est de forme "variant" donc il se peut qu'il soit conisdéré comme un nombre selon le contenue de la cellule et donc impossible a comparer avec le format string de Application.username

Salut Ausecour, :)

Salut Gabin37,

En effet cela renvoie une variable de type variant, pour forcer la comparaison sous forme de texte on peut utiliser Cstr() qui convertira en chaine de texte le contenu de la cellule.

En fait j'ai trouvé la solution, c'était mon ordre de programmation qui faisait une boucle à l'infini et aussi j'oubliai de prendre en compte certains cas donc ca finissait par planter... Merci encore pour vos réponses.

Rechercher des sujets similaires à "erreur methode value objet range echoue"