OVH Cloud OVH Cloud

Condition en VBA

3 réponses
Avatar
Denys
Bonjour =E0 tous,

J'ai cr=E9=E9 un userform qui contient 22 textbox. Comme, pour=20
chaque entr=E9e l'usager n'a qu'=E0 remplir deux ou trois=20
textbox, je veux lui =E9viter d'avoir =E0 =E9crire 0 dans tous=20
les textbox (important qu'une valeur soit inscrite dans la=20
cellule de destination =E0 cause de calculs).

Donc, j'ai voulu =E9crire une macro faisant en sorte que si=20
l'utilisateur clique sur le bouton OK du Userform,=20
qu'Excel v=E9rifie s'il y a une valeur dans le textbox, et=20
que sinon il lui attribue la valeur 0. Le code ne=20
fonctionne pas. Peut-=EAtre quelqu'un saurait pourquoi???

N.B. Je sais que je pourrais r=E9gler le probl=E8me avec le=20
Private Sub TextBox10_Exit

sauf que l'usager ne cliquera pas n=E9cessairement dans le=20
textbox, et donc, aucune valeur ne sera inscrite...=20

Voici le code

Private Sub CommandButton1_Click()
Dim Ligne As Long

With ActiveSheet()
Ligne =3D .[A65536].End(xlUp)(2).Row
With ActiveSheet()
.Range("A" & Ligne).Offset(0, 13).Formula =3D "=3Dif
(Me.TextBox10.value=3D"",0,Me.TextBox10.value)"
etc...
end with
end with
end sub

Merci beaucoup

Denys

3 réponses

Avatar
Denys
Désolé pour le dérangement,

J'ai trouvé quelque chose qui marche... Voici:
Private Sub CommandButton1_Click()
Dim Ligne As Long

With ActiveSheet()
Ligne = .[A65536].End(xlUp)(2).Row
With ActiveSheet()

If TextBox10.Value = "" Then TextBox10.Value = 0 Else
.Range("A" & Ligne).Offset(0, 13) = Me.TextBox10
end with
end with
end sub

Cependant, si vous avez quelque chose de mieux.....Ce
serait le bienvenue

Merci

Denys
-----Original Message-----
Bonjour à tous,

J'ai créé un userform qui contient 22 textbox. Comme,
pour

chaque entrée l'usager n'a qu'à remplir deux ou trois
textbox, je veux lui éviter d'avoir à écrire 0 dans tous
les textbox (important qu'une valeur soit inscrite dans
la

cellule de destination à cause de calculs).

Donc, j'ai voulu écrire une macro faisant en sorte que si
l'utilisateur clique sur le bouton OK du Userform,
qu'Excel vérifie s'il y a une valeur dans le textbox, et
que sinon il lui attribue la valeur 0. Le code ne
fonctionne pas. Peut-être quelqu'un saurait pourquoi???

N.B. Je sais que je pourrais régler le problème avec le
Private Sub TextBox10_Exit

sauf que l'usager ne cliquera pas nécessairement dans le
textbox, et donc, aucune valeur ne sera inscrite...

Voici le code

Private Sub CommandButton1_Click()
Dim Ligne As Long

With ActiveSheet()
Ligne = .[A65536].End(xlUp)(2).Row
With ActiveSheet()
.Range("A" & Ligne).Offset(0, 13).Formula = "=if
(Me.TextBox10.value="",0,Me.TextBox10.value)"
etc...
end with
end with
end sub

Merci beaucoup

Denys
.



Avatar
Ellimac
Bonjour,
Avec une boucle sur les contrôles TextBox :
Private Sub OK_Click()
Ligne = [A65536].End(xlUp)(2).Row
For c = 0 To 19
If Controls("TextBox" & (c + 1))= "" Then
Range("A" & Ligne).Offset(0, c)= 0
Else
Range("A" & Ligne).Offset(0, c)= _
Controls("TextBox" & c + 1).value
End If
Next
End Sub

Camille

-----Message d'origine-----
Bonjour à tous,

J'ai créé un userform qui contient 22 textbox. Comme,
pour

chaque entrée l'usager n'a qu'à remplir deux ou trois
textbox, je veux lui éviter d'avoir à écrire 0 dans tous
les textbox (important qu'une valeur soit inscrite dans
la

cellule de destination à cause de calculs).

Donc, j'ai voulu écrire une macro faisant en sorte que si
l'utilisateur clique sur le bouton OK du Userform,
qu'Excel vérifie s'il y a une valeur dans le textbox, et
que sinon il lui attribue la valeur 0. Le code ne
fonctionne pas. Peut-être quelqu'un saurait pourquoi???

N.B. Je sais que je pourrais régler le problème avec le
Private Sub TextBox10_Exit

sauf que l'usager ne cliquera pas nécessairement dans le
textbox, et donc, aucune valeur ne sera inscrite...

Voici le code

Private Sub CommandButton1_Click()
Dim Ligne As Long

With ActiveSheet()
Ligne = .[A65536].End(xlUp)(2).Row
With ActiveSheet()
.Range("A" & Ligne).Offset(0, 13).Formula = "=if
(Me.TextBox10.value="",0,Me.TextBox10.value)"
etc...
end with
end with
end sub

Merci beaucoup

Denys
.



Avatar
Denys
Bonjour Camille,

Eh bien!!! Voilà qui est franchement plus simple.... merci
beaucoup d'avoir pris le temps..

Bonne journée

Denys


-----Original Message-----
Bonjour,
Avec une boucle sur les contrôles TextBox :
Private Sub OK_Click()
Ligne = [A65536].End(xlUp)(2).Row
For c = 0 To 19
If Controls("TextBox" & (c + 1))= "" Then
Range("A" & Ligne).Offset(0, c)= 0
Else
Range("A" & Ligne).Offset(0, c)= _
Controls("TextBox" & c + 1).value
End If
Next
End Sub

Camille

-----Message d'origine-----
Bonjour à tous,

J'ai créé un userform qui contient 22 textbox. Comme,
pour

chaque entrée l'usager n'a qu'à remplir deux ou trois
textbox, je veux lui éviter d'avoir à écrire 0 dans tous
les textbox (important qu'une valeur soit inscrite dans
la

cellule de destination à cause de calculs).

Donc, j'ai voulu écrire une macro faisant en sorte que
si


l'utilisateur clique sur le bouton OK du Userform,
qu'Excel vérifie s'il y a une valeur dans le textbox, et
que sinon il lui attribue la valeur 0. Le code ne
fonctionne pas. Peut-être quelqu'un saurait pourquoi???

N.B. Je sais que je pourrais régler le problème avec le
Private Sub TextBox10_Exit

sauf que l'usager ne cliquera pas nécessairement dans le
textbox, et donc, aucune valeur ne sera inscrite...

Voici le code

Private Sub CommandButton1_Click()
Dim Ligne As Long

With ActiveSheet()
Ligne = .[A65536].End(xlUp)(2).Row
With ActiveSheet()
.Range("A" & Ligne).Offset(0, 13).Formula = "=if
(Me.TextBox10.value="",0,Me.TextBox10.value)"
etc...
end with
end with
end sub

Merci beaucoup

Denys
.

.