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 !
Je me suis lancé dans VBA il y a peu et j'ai déjà eu l'occasion de corriger pas mal d'erreur en consultant les différents sujets du forum mais cette fois je tombe sur un os... Comme le dit le titre, c'est une erreur '91'. Je pense avoir correctement définit mes variables mais je sens que le problème est ailleurs... sans savoir où !!
Voici le code :
Code:
Sub Livraison()
Dim a As String
Dim b As Integer
a = InputBox("Entrez le nom de la monture livrée")
b = InputBox("Entrez la quantité livrée")
Sheets("Inventaire").Select
If b < 0 Then
MsgBox "Attention, la valeur doit être positive !!", vbRetryCancel, "Attention !!"
Else: Cells.Find(What:=a, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase _
:=False, SearchFormat:=False).Activate
End If
ActiveCell.Offset(0, 1).Select
ActiveCell = ActiveCell + b
Sheets("Livraisons").Select
Do While Range("C7").Value <> Empty
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Value = Date
ActiveCell.Offset(0, 1) = a
ActiveCell.Offset(0, 2) = b
End Sub
Ca bloque dans le cells.find... Est-ce que quelqu'un saurait m'aider ? 🙂
Re : erreur d’exécution '91' variable objet gniagniagnia 🙂
Bonjour,
sans doute la valeur recherchée n'a pas été trouvé... pour éviter l'erreur et provoquer la sortie de procédure, il faut utiliser une variable objet... petit exemple ci-dessous :
Code:
Dim x As Range
Set x = Columns(1).Find(Date, , xlValues, xlWhole, , , False)
If x Is Nothing Then Exit Sub
Re : erreur d’exécution '91' variable objet gniagniagnia 🙂
Bonjour Romao et bienvenue 🙂,
On n'utilise jamais .Find directement, sauf s'il s'agit de chercher une valeur qu'on est sûr de trouver (issu d'un combobox par exemple 🙄).
De plus, on évite très sérieusement les Select et Activate, et on référence systématiquement les feuilles pour éviter les problèmes 😛...
Ta boucle tourne à vide, vu que tu ne fait rien pour remplir C7, et que c'est cette cellule que tu testes à chaque fois 😱...
Bref
Code:
Sub Livraison()
Dim a As String
Dim b As Integer
Dim Cel As Range
Dim DerLigne As Integer
a = InputBox("Entrez le nom de la monture livrée")
b = InputBox("Entrez la quantité livrée")
With Sheets("Inventaire")
If b < 0 Then
MsgBox "Attention, la valeur doit être positive !!", vbRetryCancel, "Attention !!"
Else
Set Cel = .Cells.Find(What:=a, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase _
:=False, SearchFormat:=False).Activate
If Cel Is Nothing Then MsgBox "Monture inexistante !": Exit Sub
End If
Cel.Offset(0, 1) = Cel.Offset(0, 1) + b
End With
With Sheets("Livraisons")
DerLigne = .Range("C35000").End(xlUp).Row + 1
.Range("C" & DerLigne).Value = Date
.Range("D" & DerLigne) = a
.Range("E" & DerLigne) = b
End With
End Sub
Risque de mieux marcher (sans garantie sans fichier de test 😡...)
Bonne journée 😎 Ajout : Salut Pierrot 🙂. Si seulement il n'y avait eu que ça 😛...
Re : erreur d’exécution '91' variable objet gniagniagnia 🙂
Bonjour Pierrot93 🙂
La clé est sûrement là (j'ai lu que c'était souvent le cas avec les Cells.find) mais je suis étonné parce que la valeur devrait être trouvée sans problème. Enfin, je te fais confiance ^^
Par contre ("ouh qu'il est chiant celui-là !" - Désolé 🙁 ) serait-il possible de m'expliquer un peu ton bout de code stp ? Je n'y comprends pas grand chose à vrai dire, et j'aimerais mieux comprendre afin que ça ne se reproduise plus.
Bonjour Romao et bienvenue 🙂,
On n'utilise jamais .Find directement, sauf s'il s'agit de chercher une valeur qu'on est sûr de trouver (issu d'un combobox par exemple 🙄).
De plus, on évite très sérieusement les Select et Activate, et on référence systématiquement les feuilles pour éviter les problèmes 😛...
Ta boucle tourne à vide, vu que tu ne fait rien pour remplir C7, et que c'est cette cellule que tu testes à chaque fois 😱...
Bref
Code:
Sub Livraison()
Dim a As String
Dim b As Integer
Dim Cel As Range
Dim DerLigne As Integer
a = InputBox("Entrez le nom de la monture livrée")
b = InputBox("Entrez la quantité livrée")
With Sheets("Inventaire")
If b < 0 Then
MsgBox "Attention, la valeur doit être positive !!", vbRetryCancel, "Attention !!"
Else
Set Cel = .Cells.Find(What:=a, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase _
:=False, SearchFormat:=False).Activate
If Cel Is Nothing Then MsgBox "Monture inexistante !": Exit Sub
End If
Cel.Offset(0, 1) = Cel.Offset(0, 1) + b
End With
With Sheets("Livraisons")
DerLigne = .Range("C35000").End(xlUp).Row + 1
.Range("C" & DerLigne).Value = Date
.Range("D" & DerLigne) = a
.Range("E" & DerLigne) = b
End With
End Sub
Risque de mieux marcher (sans garantie sans fichier de test 😡...)
Bonne journée 😎 Ajout : Salut Pierrot 🙂. Si seulement il n'y avait eu que ça 😛...
Merci ^^ J'avais vu que ma boucle n'était pas bien géniale mais je m'attardais sur ma première erreur. Ca évite une seconde question 😛 Merci beaucoup, pour ça et pour tout le reste 🙂 Je teste de suite.
Re : erreur d’exécution '91' variable objet gniagniagnia 🙂
Re,
la méthode "find" renvoie un objet "range", je déclare donc une variable de ce type que j'initialise par la méthode "find", si la valeur n'est pas trouvée, l'objet n'est pas initialisé et sa valeur reste à "nothing" c'est ce que test le "if"...
Regarde également la solution de JNP🙂, beaucoup plus courageux que moi... 🙂
Re : erreur d’exécution '91' variable objet gniagniagnia 🙂
Toujours le même, enfin celui donné par JNP : Livraison()
Apparemment, j'ai une erreur 1004 ici :
Code:
Set Cel = .Cells.Find(What:=a, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase _
:=False, SearchFormat:=False).Activate
If Cel Is Nothing Then MsgBox "Monture inexistante !": Exit Sub
Re : erreur d’exécution '91' variable objet gniagniagnia 🙂
Yes !! C'était bien ça 🙂 Bon, je vais étudier un peu la manip' et la tester dans d'autres conditions pour la maîtriser. Merci à vous deux pour votre aide !!
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.