OVH Cloud OVH Cloud

Problème Code source VBA

10 réponses
Avatar
j0b
Bonjour à vous alors voila, je rencontre un problème concernant le code
course que l'on ma fournit. Sur excel 2003 il fonctionne super bien tout le
temps par contre sur excel 1997, il fonctionne une fois puis le debogueur se
met en place sur la commande :
Rows(r).Delete

La procédure complète est la suivante :

Private Sub CommandButton1_Click()
Dim r As Long
Application.ScreenUpdating = False
usfsuppressionjanvier.Hide
dLgn = [B65536].End(xlUp).Row
For r = dLgn To 1 Step -1
If Cells(r, 2) = 1 * TextBox1.Value Then _
Rows(r).Delete
Next r
End Sub

Donc voila si quelqu'un pouvait m'éclarer au niveau du beug ca serait super,
merci bien à vous pour votre aide.

10 réponses

Avatar
isabelle
bonjour j0b,

assure toi que la propriété du bouton, TakeFocusOnClick soit à false,

ajoute le nom de la feuille dans le code,

Private Sub CommandButton1_Click()
Dim r As Long
Application.ScreenUpdating = False
usfsuppressionjanvier.Hide
dLgn = Sheets("MaFeuille").[B65536].End(xlUp).Row
For r = dLgn To 1 Step -1
If Sheets("MaFeuille").Cells(r, 2) = 1 * TextBox1.Value Then _
Sheets("MaFeuille").Rows(r).Delete
Next r
End Sub

isabelle


Bonjour à vous alors voila, je rencontre un problème concernant le code
course que l'on ma fournit. Sur excel 2003 il fonctionne super bien tout le
temps par contre sur excel 1997, il fonctionne une fois puis le debogueur se
met en place sur la commande :
Rows(r).Delete

La procédure complète est la suivante :

Private Sub CommandButton1_Click()
Dim r As Long
Application.ScreenUpdating = False
usfsuppressionjanvier.Hide
dLgn = [B65536].End(xlUp).Row
For r = dLgn To 1 Step -1
If Cells(r, 2) = 1 * TextBox1.Value Then _
Rows(r).Delete
Next r
End Sub

Donc voila si quelqu'un pouvait m'éclarer au niveau du beug ca serait super,
merci bien à vous pour votre aide.


Avatar
j0b
Un ptit reply pour faire remonter le topic merci :)
Avatar
j0b
Je viens de tester cela est ca beug toujours sur excel 1997, j'ai bien
effectué ce que tu m'as dis mais cela ne change rien, le débogueur s'active
toujours aux mêmes endroits. Merci quand meme mademoiselle


bonjour j0b,

assure toi que la propriété du bouton, TakeFocusOnClick soit à false,

ajoute le nom de la feuille dans le code,

Private Sub CommandButton1_Click()
Dim r As Long
Application.ScreenUpdating = False
usfsuppressionjanvier.Hide
dLgn = Sheets("MaFeuille").[B65536].End(xlUp).Row
For r = dLgn To 1 Step -1
If Sheets("MaFeuille").Cells(r, 2) = 1 * TextBox1.Value Then _
Sheets("MaFeuille").Rows(r).Delete
Next r
End Sub

isabelle


Bonjour à vous alors voila, je rencontre un problème concernant le code
course que l'on ma fournit. Sur excel 2003 il fonctionne super bien tout le
temps par contre sur excel 1997, il fonctionne une fois puis le debogueur se
met en place sur la commande :
Rows(r).Delete

La procédure complète est la suivante :

Private Sub CommandButton1_Click()
Dim r As Long
Application.ScreenUpdating = False
usfsuppressionjanvier.Hide
dLgn = [B65536].End(xlUp).Row
For r = dLgn To 1 Step -1
If Cells(r, 2) = 1 * TextBox1.Value Then _
Rows(r).Delete
Next r
End Sub

Donc voila si quelqu'un pouvait m'éclarer au niveau du beug ca serait super,
merci bien à vous pour votre aide.





Avatar
PMO
Bonjour,

Essayez avec la ligne
If Cells(r, 2) = 1 * TextBox1.Value Then _
Rows(r).Delete
modifiée.

'**********
Private Sub CommandButton1_Click()
Dim r As Long
Application.ScreenUpdating = False
usfsuppressionjanvier.Hide
dLgn = [B65536].End(xlUp).Row
For r = dLgn To 1 Step -1
''''ligne qui suit modifiée''''
If Range(Cells(r, 2), Cells(r, 2)) = 1 * TextBox1.Value Then _
Rows(r).Delete
Next r
End Sub
'**********

Cordialement.
--
PMO
Patrick Morange



Bonjour à vous alors voila, je rencontre un problème concernant le code
course que l'on ma fournit. Sur excel 2003 il fonctionne super bien tout le
temps par contre sur excel 1997, il fonctionne une fois puis le debogueur se
met en place sur la commande :
Rows(r).Delete

La procédure complète est la suivante :

Private Sub CommandButton1_Click()
Dim r As Long
Application.ScreenUpdating = False
usfsuppressionjanvier.Hide
dLgn = [B65536].End(xlUp).Row
For r = dLgn To 1 Step -1
If Cells(r, 2) = 1 * TextBox1.Value Then _
Rows(r).Delete
Next r
End Sub

Donc voila si quelqu'un pouvait m'éclarer au niveau du beug ca serait super,
merci bien à vous pour votre aide.


Avatar
isabelle
bonjour j0b,

quel est le message d'erreur, et quel est la valeur de r à cette instant ?

isabelle


Je viens de tester cela est ca beug toujours sur excel 1997, j'ai bien
effectué ce que tu m'as dis mais cela ne change rien, le débogueur s'active
toujours aux mêmes endroits. Merci quand meme mademoiselle



bonjour j0b,

assure toi que la propriété du bouton, TakeFocusOnClick soit à false,

ajoute le nom de la feuille dans le code,

Private Sub CommandButton1_Click()
Dim r As Long
Application.ScreenUpdating = False
usfsuppressionjanvier.Hide
dLgn = Sheets("MaFeuille").[B65536].End(xlUp).Row
For r = dLgn To 1 Step -1
If Sheets("MaFeuille").Cells(r, 2) = 1 * TextBox1.Value Then _
Sheets("MaFeuille").Rows(r).Delete
Next r
End Sub

isabelle



Bonjour à vous alors voila, je rencontre un problème concernant le code
course que l'on ma fournit. Sur excel 2003 il fonctionne super bien tout le
temps par contre sur excel 1997, il fonctionne une fois puis le debogueur se
met en place sur la commande :
Rows(r).Delete

La procédure complète est la suivante :

Private Sub CommandButton1_Click()
Dim r As Long
Application.ScreenUpdating = False
usfsuppressionjanvier.Hide
dLgn = [B65536].End(xlUp).Row
For r = dLgn To 1 Step -1
If Cells(r, 2) = 1 * TextBox1.Value Then _
Rows(r).Delete
Next r
End Sub

Donc voila si quelqu'un pouvait m'éclarer au niveau du beug ca serait super,
merci bien à vous pour votre aide.







Avatar
j0b
Merci bien pour le coup de main je vais tester cela et je verrais bien ce que
ca donne, si nécessaire je posterais un autre topic ou je continuerais celui
la et encore merci pour l'aide c est vraiment super sympa merci



"PMO" wrote:

Bonjour,

Essayez avec la ligne
If Cells(r, 2) = 1 * TextBox1.Value Then _
Rows(r).Delete
modifiée.

'**********
Private Sub CommandButton1_Click()
Dim r As Long
Application.ScreenUpdating = False
usfsuppressionjanvier.Hide
dLgn = [B65536].End(xlUp).Row
For r = dLgn To 1 Step -1
''''ligne qui suit modifiée''''
If Range(Cells(r, 2), Cells(r, 2)) = 1 * TextBox1.Value Then _
Rows(r).Delete
Next r
End Sub
'**********

Cordialement.
--
PMO
Patrick Morange



Bonjour à vous alors voila, je rencontre un problème concernant le code
course que l'on ma fournit. Sur excel 2003 il fonctionne super bien tout le
temps par contre sur excel 1997, il fonctionne une fois puis le debogueur se
met en place sur la commande :
Rows(r).Delete

La procédure complète est la suivante :

Private Sub CommandButton1_Click()
Dim r As Long
Application.ScreenUpdating = False
usfsuppressionjanvier.Hide
dLgn = [B65536].End(xlUp).Row
For r = dLgn To 1 Step -1
If Cells(r, 2) = 1 * TextBox1.Value Then _
Rows(r).Delete
Next r
End Sub

Donc voila si quelqu'un pouvait m'éclarer au niveau du beug ca serait super,
merci bien à vous pour votre aide.




Avatar
j0b
Merci mais ca plante toujours maintenant j'ai un message d'erreur qui
apparait a la ligne modifié sur excel 2003 donc je ne pense pas que ca
fonctionne d avantage sur le 97, donc je suis toujours à l'écoute de vos
propositions si vous avez des solutions. Merci encore
Avatar
PMO
Bonjour,

La valeur d'une TextBox est, sauf erreur de ma part, toujours une String.
Ainsi si vous tapez 999 par exemple, VBA l'interprète comme une chaîne et, à
mon avis,
l'erreur est provoquée par la pseudo conversion automatique que vous faites
avec la portion de ligne
1 * TextBox1.Value

Essayez donc ceci
**********
Private Sub CommandButton1_Click()
Dim r As Long
Dim var
var = TextBox1.Value
MsgBox TypeName(var) 'Pour visualiser (à supprimer)
'---- Conversion explicite ----
If IsNumeric(var) Then
MsgBox "La valeur de TextBox1 est un nombre" 'Pour visualiser (à supprimer)
var = CDbl(var)
Else
MsgBox "La valeur de TextBox1 n'est pas un nombre" 'Pour visualiser (à
supprimer)
'---- Si vous voulez faire une comparaison UNIQUEMENT ----
'---- sur un nombre retirez la quote de la ligne suivante ----
' Exit Sub
End If
'--------------------------
MsgBox TypeName(var) 'Pour visualiser (à supprimer)
Application.ScreenUpdating = False
'usfsuppressionjanvier.Hide
Me.Hide
dLgn = [B65536].End(xlUp).Row
For r = dLgn To 1 Step -1
If Range(Cells(r, 2), Cells(r, 2)) = var Then _
Rows(r).Delete
Next r
End Sub
**********

Cordialement.
--
PMO
Patrick Morange



Merci mais ca plante toujours maintenant j'ai un message d'erreur qui
apparait a la ligne modifié sur excel 2003 donc je ne pense pas que ca
fonctionne d avantage sur le 97, donc je suis toujours à l'écoute de vos
propositions si vous avez des solutions. Merci encore


Avatar
AV
Ave PMO,

La valeur d'une TextBox est, sauf erreur de ma part, toujours une String.
Ainsi si vous tapez 999 par exemple, VBA l'interprète comme une chaîne et, à
mon avis,
l'erreur est provoquée par la pseudo conversion automatique que vous faites
avec la portion de ligne 1 * TextBox1.Value


Sans intervenir dans la question initiale (pas lu) mais sur la faculté de
convertir en faisant une simple opération arthmétique quelconque :
MsgBox VarType(TextBox1)
--> résultat : 8 --> type chaîne --> ok
MsgBox VarType(TextBox1 * 1)
--> résultat : 5 --> type double --> donc la conversion a bien eu lieu ...

AV juste pour le smilblick

Avatar
PMO
Bonjour,

Vous avez raison mais, dans le cas présent, si l'utilisateur veut supprimer
la ligne
contenant en colonne B la valeur "toto" la conversion automatique échouera
(erreur 13 type mismatch).
J'utilise l'artillerie lourde pour une meilleure compréhension du demandeur
dans la mesure où j'ai bien compris son problème.
Je n'en suis pas certain car il n'est pas vraiment explicite sur ses messages
d'erreur.

Cordialement.
--
PMO
Patrick Morange



Ave PMO,

La valeur d'une TextBox est, sauf erreur de ma part, toujours une String.
Ainsi si vous tapez 999 par exemple, VBA l'interprète comme une chaîne et, à
mon avis,
l'erreur est provoquée par la pseudo conversion automatique que vous faites
avec la portion de ligne 1 * TextBox1.Value


Sans intervenir dans la question initiale (pas lu) mais sur la faculté de
convertir en faisant une simple opération arthmétique quelconque :
MsgBox VarType(TextBox1)
--> résultat : 8 --> type chaîne --> ok
MsgBox VarType(TextBox1 * 1)
--> résultat : 5 --> type double --> donc la conversion a bien eu lieu ...

AV juste pour le smilblick