Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

if then else : seul else se lance !!!

pandaexcel

XLDnaute Nouveau
bonjour,
cela fait plusieurs heures que je cherche mon erreur sans la trouver :
je recupere une valeur d'une textbox est si elle correspond a une cellule contenue dans une plage, la macro doit effacer la ligne
seulement meme si la valeur de la textbox correspont a celle de la cellule
seul la condition else se lance

Private Sub CommandButton1_Click()

Dim i As Integer
TextBox2 = Val(TextBox1.Value)
Sheets("Base de donnée").Select
For i = 1 To Range("a2000").End(xlUp).Row
If Cells(i, 1).Value = TextBox2 Then
Cells(i, 6).EntireRow.Delete
i = i - 1
MsgBox "ligne effacee"
Sheets("Accueil").Select
Unload UserForm1
Panneauprincipal.Show 0
Else
MsgBox "occurence introuvable, veuillez retaper une autre valeur"
Unload UserForm1
UserForm1.Show 0
Exit For
End If
Next


End Sub


une idée ???
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : if then else : seul else se lance !!!

Bonjour

Tu as quoi comme valeur ??

Du chiffre des dates ??

Car dans ton textbox c'est du texte don cil doit falloir peut-être faire une conversion
 

pierrejean

XLDnaute Barbatruc
Re : if then else : seul else se lance !!!

bonjour pandaexcel

et bienvenue sur XLD

Sans savoir ce qu'il y a dans la colonne A il est difficile de t'aider
Toutefois j'attire ton attention sur le fait que le contenu d'une textbox est toujours du TEXTE (le Val n'y change rien )
Si par hasard la colonne A comporte des nombres il y a lieu d'ecrire
If Cells(i, 1).Value = Cdbl(TextBox2) Then
ou
If Cells(i, 1).Value = Cint(TextBox2) Then

Et en regle générale , sache qu'un fichier exemple nous en dit toujours plus que n'importe quelle info

Edit : Salut Pascal
 

pandaexcel

XLDnaute Nouveau
Re : if then else : seul else se lance !!!

bonjour
la conversion est deja faite :
TextBox2 = Val(TextBox1.Value)
si j'enleve le bloc else, l bloc then fonctionne
mais si je remet le bloc else le then fonctionne plus
 
G

Guest

Guest
Re : if then else : seul else se lance !!!

Bonjour PandaExcel,

La cause peut provenir de différentes choses.

Mais ce que je peux voir dans ta macro c'est que si les valeurs contenues dans les cellules de références sont des valeurs numerique, elles sont peut-être mal comparées à la valeur du textbox qui comme sont nom l'indique renvoie des valeurs de type textuelle (chaine de caractères) même s'il contient des chiffres. Il se peut donc qu'il y ait une conversion à faire avant comparaison.

si ce n'est pas cela, il nous faut plus de détail et un exemple précis des données, anonymisées.

A bientôt

Editascal, PierreJean j'arrive avec un train de retard!
 

fanfan38

XLDnaute Barbatruc
Re : if then else : seul else se lance !!!

Bonjour
Private Sub CommandButton1_Click()
Dim i As Integer
meserr as byte
meserr=0
TextBox2 = Val(TextBox1.Value)
Sheets("Base de donnée").Select
For i = 1 To Range("a2000").End(xlUp).Row
If Cells(i, 1).Value = TextBox2 Then
Cells(i, 6).EntireRow.Delete
meserr=1
MsgBox "ligne effacee"
exit for
End If
Next
if meserr=1 then
Sheets("Accueil").Select
Unload UserForm1
Panneauprincipal.Show 0
else
MsgBox "occurrence introuvable, veuillez retaper une autre valeur"
UserForm1.textbox1.value=""
UserForm1.textbox2.value=""
endif
End Sub


Bonjour ter tous je suis bien d'accord avec vous un fichier exemple répondrai à beaucoup de question...
A+ François
 
Dernière édition:

pandaexcel

XLDnaute Nouveau
Re : if then else : seul else se lance !!!

voici un exemple,
la valeur n'est jamais trouvée donc la msgbox operation introuvable s'affiche !
 

Pièces jointes

  • Nouveau Feuille Microsoft Office Excel (2).xls
    33.5 KB · Affichages: 45

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : if then else : seul else se lance !!!

Re

oui c'est normal si il ne trouve pas sur la première ligne et bien il sort de la boucle

Regarde du coté de Find au lieu de la boucle sur A1 A30
 

pandaexcel

XLDnaute Nouveau
Re : if then else : seul else se lance !!!

merci fanfan38
le programme fonctionne avec ce code :

Private Sub CommandButton1_Click()
Dim i As Integer
TextBox2 = Val(TextBox1.Value)
Sheets("Base de donnée").Select
For i = 1 To Range("a2000").End(xlUp).Row
If Cells(i, 1).Value = TextBox2 Then
Cells(i, 1).EntireRow.Delete
meserr = 1
MsgBox "ligne effacee"
Exit For
End If
Next
If meserr = 1 Then
Sheets("Accueil").Select
Unload UserForm1
Panneauprincipal.Show 0
Else
MsgBox "occurrence introuvable, veuillez retaper une autre valeur"
End If
End Sub

merci a tous et a ce forum
rapide et efficace
 

Discussions similaires

Réponses
6
Affichages
315
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…