Erreur Range dans Textbox

  • Initiateur de la discussion Initiateur de la discussion Moa
  • Date de début Date de début

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 !

M

Moa

Guest
Salut à tous !

Dans la getion des erreurs, comment gérer l'erreur d'une valeur ne faisant pas référence à une cellule ?

En fait, j'ai plusieurs textboxs, dans lesquels l'utilisateur entre des valeurs différentes, ces valeurs dans ma macro deviennent des variables.

Et dans ces textboxs j'en ai deux qui servent à définir la plage de travail de la macro.

Et je n'arrive pas à faire le code de gestion d'erreur si les valeurs entrées ne correpondent pas à une cellule.

Si un chef pouvait me mettre sur la voie, ce serait vraiment cool.

Merci beaucoup

@ +

Moa
 
En espérant que c'est ce que tu veux 🙂

'**********************************************************************************************
'* determine si la saisie rentrée par l'utilisateur est de type string ( n'importe quoi ) *
'* ou de type range (reférence a une cellule) *
'* renvoi 0 si de type string, 1 si de type range *
'**********************************************************************************************
Public Function TypeSaisie(FCellule As String) As Integer
On Error GoTo Er
Dim r As Object
Set r = Range(FCellule)
TypeSaisie = 1
Exit Function
Er:
TypeSaisie = 0
End Function
 
Merci Arnaud !

Je vais essayer de me dépatouiller avec çà.

Et justement, j'ai un autre problème d'erreur possible.

Dans mon textbox1, l'utilisateur saisi, le début de la plage, dans le textbox2, la fin de la plage.

Hors si la valeur de la fin est avant le début de la plage, j'ai aussi un hic, et là aussi je rame.

J'ai commencé en donnant des valeurs numériques à mes ranges, mais c'est une vraie usine à gaz.


Merci à toi et bonne journée !

@ +

Moa
 
pour tes histoires de plages, à part en comparant tes plages je vois pas trop ( je suppose que c'est ce que tu fais dans ton usine à gaz )

sinon g oublié de mettre des commentaire dans ma fonction :
et bien c'est tout seul. j'essaye de créer un objet range et la 2 possiblités : ça pète ce n'est pas un range
ça pète pas c'est bien un range.
 
Salut Arnaud !

En ce qui concerne la sélection de la plage, j'ai trouvé....Héhé :


If Range(UserForm1.TextBox1.Text).Column + Range(UserForm1.TextBox1.Text).Row > Range(UserForm1.TextBox2.Text).Column + Range(UserForm1.TextBox2.Text).Row Then
MsgBox "Plage Impossible, La Fin doit être Supérieure au Début !", vbCritical
Exit Sub

En fait je fais l'addition des valeurs Colonne et Ligne pour chaque TextBox et il faut que la valeur du textbox1 ne soit pas supérieure à celle du textbox2.

Maintenant, faut que j'arrive à résoudre le problème des valeurs entrées dans les textboxs.

Et j'ai du mal à adapter ta fonction.

@ +

Moa
 
Tout à fait !

Je suis déjà sur une piste.

J'ai essayé en déclarant une variable object ou range, puis de dire :

If IsRange(blablabla) then msgbox blablabla.

Mais cela ne fonctionne pas.

Là, j'extrait avec left le premier caractère à gauche et je regarde si il est d'ordre alpahbétique, puis celui de droite et je regarde si il est numérique.

Mais il y a trop de possibilités et cela devient une vraie usine à gaz.

Je suis sur qu'il y a un moyen simple d'obliger à avoir des valeurs "Range" dans mes deux textboxs.

@ +

Moa
 
et bien c'est bien ce que je fais dans mon code ce que tu veux faire.
si tu essaye de créer un objet Range avec comme valeur du texte qui ne conrespond pas a un range, une erreur interviens donc tu passe dans la gestion d'erreur et tu renvoi que ton texte n'es pas un range.
en tout cas chez moi ça marche très bien 🙂
 
Salut Arnaud !


Excuse-moi, je me suis mal exprimé.

Je ne voulais pas dire que ton code ne fonctionnait pas, je l'ai testé et il fonctionne à merveille.

Ce que je voulais dire, est que je n'arrive pas à l'adapter correctement dans ma macro.

Mais je viens de revenir dessus et je devrais y arriver..auquel cas....je te fais signe.

Encore merci à toi.

@ +

Moa
 
Re Arnaud !

Voilà, en fait, j'ai plus d'une dizaine de textbox, avec chacun des valeurs et des formats à entrer, différents.

Et pour linstant, j'ai déjà fait une dizaine de gestion d'erreurs, cela devient long.

Donc, j'ai simplement rajouté au début de mon code, On Error GoTo Bof

Puis Bof : msgbox "blablabla"
Exit Sub

De cette manière, je gère en une sel fois toutes mes erreurs de saisie possibles.

En revanche, j'ai un autre problème, quand il n'y a pas d'erreur, la boite de message s'affiche quand-même.

Décidement, y'a toujours un truc...Héhé...!!!

@ +

Moa
 
Salut Arnaud !

Merci c'est sympa, je viens juste de trouver et je venais sur le forum te le dire, et je m'aperçois que tu m'avait donné la solution.

Ceci dit, après de multiples tests, j'ai décidé de combiner les deux :

Sub UneColonneSurDeux()
On Error GoTo Bof
If BlaBlaBlaThen
MsgBox "Vous avez oublié une valeur !", vbCritical
Exit Sub
End If
If BloBloBloThen
MsgBox "Valeur Négative Impossible, Veuillez saisir une valeure Supérieure ou égale à Zéro !", vbCritical
Exit Sub
End If

Etc...tous mes tests

Toutes mes déclarations de variable

Ma Procédure

Bof: If Err.Number <> 0 Then MsgBox "Valeur Début ou Fin ne fait pas référence à une cellule !", vbCritical
Exit Sub
End Sub

Merci de m'avoir aidé, c'est super cool !

@ +

Moa
 
- 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.

Discussions similaires

Réponses
3
Affichages
773
Retour