Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Userform et données

8 réponses
Avatar
sunburn
Bonjour,
comment faire pour afficher une boite de dialogue, afin de pouvoir saisir
des données ?
je m'explique; ce que je voudrais, c'est une boite de dialogue, qui affiche
3 lignes, avec pour chaque ligne une case dans laquelle on peut mettre un
nombre (et seulement un nombre entre 1 et 1.000.000.000 par exemple, peut
importe, mais sans virgule). Chaque ligne reprend 1info qui est dans ma
feuille "PRIX", et la valeur saisie apr l'utilisateur modifie une cellule,
pas de valeur, alors pas de modif
exemple :
"valeur actuelle du lait :" "=valeur cellule J64" "case de saisie"
"valeur actuelle du pain :" "=valeur cellule J67" "case de saisie"
"valeur actuelle de la bière :" "=valeur cellule J68" "case de saisie"
OK ou ANNULER

chaque saisie modifie la cellule qui est en valeur dans le texte.

merci de votre aide, je bosse dessus, et je prend tout ce que vous pouvez
m'aidez.

YANN

8 réponses

Avatar
sunburn
re,
j'ai adapté une macro, mais bon, c'est du bricolage.
puis-je faire mieux ?
je vous envoi ce que j'ai commencé, en cjoint:
http://cjoint.com/?hwoWnAzYd3
Merci de votre aide.
YANN

"sunburn" wrote:

Bonjour,
comment faire pour afficher une boite de dialogue, afin de pouvoir saisir
des données ?
je m'explique; ce que je voudrais, c'est une boite de dialogue, qui affiche
3 lignes, avec pour chaque ligne une case dans laquelle on peut mettre un
nombre (et seulement un nombre entre 1 et 1.000.000.000 par exemple, peut
importe, mais sans virgule). Chaque ligne reprend 1info qui est dans ma
feuille "PRIX", et la valeur saisie apr l'utilisateur modifie une cellule,
pas de valeur, alors pas de modif
exemple :
"valeur actuelle du lait :" "=valeur cellule J64" "case de saisie"
"valeur actuelle du pain :" "=valeur cellule J67" "case de saisie"
"valeur actuelle de la bière :" "=valeur cellule J68" "case de saisie"
OK ou ANNULER

chaque saisie modifie la cellule qui est en valeur dans le texte.

merci de votre aide, je bosse dessus, et je prend tout ce que vous pouvez
m'aidez.

YANN


Avatar
MichDenis
Bonjour Sunburn,

Ajoute ceci au code de ton formulaire :

Private Sub UserForm_Initialize()
With Worksheets("ChampsIndicés")
Me.val1 = .Range("B1")
Me.val2 = .Range("C1")
Me.val3 = .Range("D1")
End With
End Sub




"sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
comment faire pour afficher une boite de dialogue, afin de pouvoir saisir
des données ?
je m'explique; ce que je voudrais, c'est une boite de dialogue, qui affiche
3 lignes, avec pour chaque ligne une case dans laquelle on peut mettre un
nombre (et seulement un nombre entre 1 et 1.000.000.000 par exemple, peut
importe, mais sans virgule). Chaque ligne reprend 1info qui est dans ma
feuille "PRIX", et la valeur saisie apr l'utilisateur modifie une cellule,
pas de valeur, alors pas de modif
exemple :
"valeur actuelle du lait :" "=valeur cellule J64" "case de saisie"
"valeur actuelle du pain :" "=valeur cellule J67" "case de saisie"
"valeur actuelle de la bière :" "=valeur cellule J68" "case de saisie"
OK ou ANNULER

chaque saisie modifie la cellule qui est en valeur dans le texte.

merci de votre aide, je bosse dessus, et je prend tout ce que vous pouvez
m'aidez.

YANN
Avatar
sunburn
Re,
impec Michel, donc là ça me met les valeurs actuelles dans mes zones de
saisie, c'est nikel.
PAr contre, comment faire pour que quand je clique sur "OK", il mette les
valeurs à jours, je ne veux pas qu'il mette les valeurs en A, mais dans les
cases J64, J67 et J68.
il me faut modifier la seconde partie de ma macro, mais j'ai un peu de mal.
merci de ton aide.
YANN

"MichDenis" wrote:

Bonjour Sunburn,

Ajoute ceci au code de ton formulaire :

Private Sub UserForm_Initialize()
With Worksheets("ChampsIndicés")
Me.val1 = .Range("B1")
Me.val2 = .Range("C1")
Me.val3 = .Range("D1")
End With
End Sub




"sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
comment faire pour afficher une boite de dialogue, afin de pouvoir saisir
des données ?
je m'explique; ce que je voudrais, c'est une boite de dialogue, qui affiche
3 lignes, avec pour chaque ligne une case dans laquelle on peut mettre un
nombre (et seulement un nombre entre 1 et 1.000.000.000 par exemple, peut
importe, mais sans virgule). Chaque ligne reprend 1info qui est dans ma
feuille "PRIX", et la valeur saisie apr l'utilisateur modifie une cellule,
pas de valeur, alors pas de modif
exemple :
"valeur actuelle du lait :" "=valeur cellule J64" "case de saisie"
"valeur actuelle du pain :" "=valeur cellule J67" "case de saisie"
"valeur actuelle de la bière :" "=valeur cellule J68" "case de saisie"
OK ou ANNULER

chaque saisie modifie la cellule qui est en valeur dans le texte.

merci de votre aide, je bosse dessus, et je prend tout ce que vous pouvez
m'aidez.

YANN




Avatar
sunburn
re,
c'est bon, j'ai modifié, et ça fonctionne impec.
Dernier petit truc : comment les convertir tout de suite en nombre ??

UN GRAND MERCI A TOI.
---
Private Sub UserForm_Initialize()
With Worksheets("80_21")
Me.val1 = .Range("J64")
Me.val2 = .Range("J67")
Me.val3 = .Range("J68")
End With
End Sub

Private Sub B_OK_Click()
rep = MsgBox("ATTENTION ! Vous allez modifier les données fiscales actuelles
?" _
& vbLf & "Etes-vous sûr(e) ?", vbYesNo)
Application.ScreenUpdating = False
If rep = vbNo Then Exit Sub
'contrôles
For I = 1 To 3
If Not IsNumeric(Controls("val" & I)) Then
MsgBox "Erreur!"
Me("val" & I).SetFocus
Exit Sub
End If
Next I
'transfert BD
Range("J64") = Me.val1
Range("J67") = Me.val2
Range("J68") = Me.val3
Bouton80_21.Hide
End Sub

Private Sub B_Annuler_Click()
'si l'utilisateur clique sur Annuler, on quitte.
Unload Me
Exit Sub
End Sub
-----

"MichDenis" wrote:

Bonjour Sunburn,

Ajoute ceci au code de ton formulaire :

Private Sub UserForm_Initialize()
With Worksheets("ChampsIndicés")
Me.val1 = .Range("B1")
Me.val2 = .Range("C1")
Me.val3 = .Range("D1")
End With
End Sub




"sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
comment faire pour afficher une boite de dialogue, afin de pouvoir saisir
des données ?
je m'explique; ce que je voudrais, c'est une boite de dialogue, qui affiche
3 lignes, avec pour chaque ligne une case dans laquelle on peut mettre un
nombre (et seulement un nombre entre 1 et 1.000.000.000 par exemple, peut
importe, mais sans virgule). Chaque ligne reprend 1info qui est dans ma
feuille "PRIX", et la valeur saisie apr l'utilisateur modifie une cellule,
pas de valeur, alors pas de modif
exemple :
"valeur actuelle du lait :" "=valeur cellule J64" "case de saisie"
"valeur actuelle du pain :" "=valeur cellule J67" "case de saisie"
"valeur actuelle de la bière :" "=valeur cellule J68" "case de saisie"
OK ou ANNULER

chaque saisie modifie la cellule qui est en valeur dans le texte.

merci de votre aide, je bosse dessus, et je prend tout ce que vous pouvez
m'aidez.

YANN




Avatar
sunburn
précision : je ne veux que des nombres avec séparateur de milliers.
merci

"sunburn" wrote:

re,
c'est bon, j'ai modifié, et ça fonctionne impec.
Dernier petit truc : comment les convertir tout de suite en nombre ??

UN GRAND MERCI A TOI.
---
Private Sub UserForm_Initialize()
With Worksheets("80_21")
Me.val1 = .Range("J64")
Me.val2 = .Range("J67")
Me.val3 = .Range("J68")
End With
End Sub

Private Sub B_OK_Click()
rep = MsgBox("ATTENTION ! Vous allez modifier les données fiscales actuelles
?" _
& vbLf & "Etes-vous sûr(e) ?", vbYesNo)
Application.ScreenUpdating = False
If rep = vbNo Then Exit Sub
'contrôles
For I = 1 To 3
If Not IsNumeric(Controls("val" & I)) Then
MsgBox "Erreur!"
Me("val" & I).SetFocus
Exit Sub
End If
Next I
'transfert BD
Range("J64") = Me.val1
Range("J67") = Me.val2
Range("J68") = Me.val3
Bouton80_21.Hide
End Sub

Private Sub B_Annuler_Click()
'si l'utilisateur clique sur Annuler, on quitte.
Unload Me
Exit Sub
End Sub
-----


Avatar
MichDenis
Tu utilises une fonction de conversion ...

Si le contenu de tes textbox contient des entiers

Range("A1") = Clng(Me.textbox1) 'Exemple

Si le contenu de tes textbox contient des chiffres avec décimales
Range("A1") = cdbl(Me.textbox1) 'Exemple

N.B- Les fonctions de conversion comme CDBL() utilise seulement les
paramètres définis dans la panneau de configuration de Windows.
Si ce paramètre "séparateur décimale" dans ce dernier est la virgule
et que tu utilises le point lors de la saisie dans tes textbox, tu devras
substituer le point pour la virgule. tu devrais utiliser quelque chose
comme :
Range("A1") = CDbl(Application.Substitute(Me.TextBox1, ".", ","))



"sunburn" a écrit dans le message de groupe de
discussion :
re,
c'est bon, j'ai modifié, et ça fonctionne impec.
Dernier petit truc : comment les convertir tout de suite en nombre ??

UN GRAND MERCI A TOI.
---
Private Sub UserForm_Initialize()
With Worksheets("80_21")
Me.val1 = .Range("J64")
Me.val2 = .Range("J67")
Me.val3 = .Range("J68")
End With
End Sub

Private Sub B_OK_Click()
rep = MsgBox("ATTENTION ! Vous allez modifier les données fiscales actuelles
?" _
& vbLf & "Etes-vous sûr(e) ?", vbYesNo)
Application.ScreenUpdating = False
If rep = vbNo Then Exit Sub
'contrôles
For I = 1 To 3
If Not IsNumeric(Controls("val" & I)) Then
MsgBox "Erreur!"
Me("val" & I).SetFocus
Exit Sub
End If
Next I
'transfert BD
Range("J64") = Me.val1
Range("J67") = Me.val2
Range("J68") = Me.val3
Bouton80_21.Hide
End Sub

Private Sub B_Annuler_Click()
'si l'utilisateur clique sur Annuler, on quitte.
Unload Me
Exit Sub
End Sub
-----

"MichDenis" wrote:

Bonjour Sunburn,

Ajoute ceci au code de ton formulaire :

Private Sub UserForm_Initialize()
With Worksheets("ChampsIndicés")
Me.val1 = .Range("B1")
Me.val2 = .Range("C1")
Me.val3 = .Range("D1")
End With
End Sub




"sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
comment faire pour afficher une boite de dialogue, afin de pouvoir saisir
des données ?
je m'explique; ce que je voudrais, c'est une boite de dialogue, qui affiche
3 lignes, avec pour chaque ligne une case dans laquelle on peut mettre un
nombre (et seulement un nombre entre 1 et 1.000.000.000 par exemple, peut
importe, mais sans virgule). Chaque ligne reprend 1info qui est dans ma
feuille "PRIX", et la valeur saisie apr l'utilisateur modifie une cellule,
pas de valeur, alors pas de modif
exemple :
"valeur actuelle du lait :" "=valeur cellule J64" "case de saisie"
"valeur actuelle du pain :" "=valeur cellule J67" "case de saisie"
"valeur actuelle de la bière :" "=valeur cellule J68" "case de saisie"
OK ou ANNULER

chaque saisie modifie la cellule qui est en valeur dans le texte.

merci de votre aide, je bosse dessus, et je prend tout ce que vous pouvez
m'aidez.

YANN




Avatar
MichDenis
À la lumière du message précédent,

Tu peux faire comme ceci :

with Range("A1")
.NumberFormat = "#,##0"
.value= CLng(Me.TextBox1)
end with



"sunburn" a écrit dans le message de groupe de
discussion :
précision : je ne veux que des nombres avec séparateur de milliers.
merci

"sunburn" wrote:

re,
c'est bon, j'ai modifié, et ça fonctionne impec.
Dernier petit truc : comment les convertir tout de suite en nombre ??

UN GRAND MERCI A TOI.
---
Private Sub UserForm_Initialize()
With Worksheets("80_21")
Me.val1 = .Range("J64")
Me.val2 = .Range("J67")
Me.val3 = .Range("J68")
End With
End Sub

Private Sub B_OK_Click()
rep = MsgBox("ATTENTION ! Vous allez modifier les données fiscales actuelles
?" _
& vbLf & "Etes-vous sûr(e) ?", vbYesNo)
Application.ScreenUpdating = False
If rep = vbNo Then Exit Sub
'contrôles
For I = 1 To 3
If Not IsNumeric(Controls("val" & I)) Then
MsgBox "Erreur!"
Me("val" & I).SetFocus
Exit Sub
End If
Next I
'transfert BD
Range("J64") = Me.val1
Range("J67") = Me.val2
Range("J68") = Me.val3
Bouton80_21.Hide
End Sub

Private Sub B_Annuler_Click()
'si l'utilisateur clique sur Annuler, on quitte.
Unload Me
Exit Sub
End Sub
-----


Avatar
sunburn
Impecable Michel,
je te remercie beaucoup pour tes explications.
ça fonctionne impecablement bien.

Merci encore.
Bonnes vacances si jamais tu en as.

YANN

"MichDenis" wrote:

Tu utilises une fonction de conversion ...

Si le contenu de tes textbox contient des entiers

Range("A1") = Clng(Me.textbox1) 'Exemple

Si le contenu de tes textbox contient des chiffres avec décimales
Range("A1") = cdbl(Me.textbox1) 'Exemple

N.B- Les fonctions de conversion comme CDBL() utilise seulement les
paramètres définis dans la panneau de configuration de Windows.
Si ce paramètre "séparateur décimale" dans ce dernier est la virgule
et que tu utilises le point lors de la saisie dans tes textbox, tu devras
substituer le point pour la virgule. tu devrais utiliser quelque chose
comme :
Range("A1") = CDbl(Application.Substitute(Me.TextBox1, ".", ","))



"sunburn" a écrit dans le message de groupe de
discussion :
re,
c'est bon, j'ai modifié, et ça fonctionne impec.
Dernier petit truc : comment les convertir tout de suite en nombre ??

UN GRAND MERCI A TOI.
---
Private Sub UserForm_Initialize()
With Worksheets("80_21")
Me.val1 = .Range("J64")
Me.val2 = .Range("J67")
Me.val3 = .Range("J68")
End With
End Sub

Private Sub B_OK_Click()
rep = MsgBox("ATTENTION ! Vous allez modifier les données fiscales actuelles
?" _
& vbLf & "Etes-vous sûr(e) ?", vbYesNo)
Application.ScreenUpdating = False
If rep = vbNo Then Exit Sub
'contrôles
For I = 1 To 3
If Not IsNumeric(Controls("val" & I)) Then
MsgBox "Erreur!"
Me("val" & I).SetFocus
Exit Sub
End If
Next I
'transfert BD
Range("J64") = Me.val1
Range("J67") = Me.val2
Range("J68") = Me.val3
Bouton80_21.Hide
End Sub

Private Sub B_Annuler_Click()
'si l'utilisateur clique sur Annuler, on quitte.
Unload Me
Exit Sub
End Sub
-----

"MichDenis" wrote:

> Bonjour Sunburn,
>
> Ajoute ceci au code de ton formulaire :
>
> Private Sub UserForm_Initialize()
> With Worksheets("ChampsIndicés")
> Me.val1 = .Range("B1")
> Me.val2 = .Range("C1")
> Me.val3 = .Range("D1")
> End With
> End Sub
>
>
>
>
> "sunburn" a écrit dans le message de groupe de
> discussion :
> Bonjour,
> comment faire pour afficher une boite de dialogue, afin de pouvoir saisir
> des données ?
> je m'explique; ce que je voudrais, c'est une boite de dialogue, qui affiche
> 3 lignes, avec pour chaque ligne une case dans laquelle on peut mettre un
> nombre (et seulement un nombre entre 1 et 1.000.000.000 par exemple, peut
> importe, mais sans virgule). Chaque ligne reprend 1info qui est dans ma
> feuille "PRIX", et la valeur saisie apr l'utilisateur modifie une cellule,
> pas de valeur, alors pas de modif
> exemple :
> "valeur actuelle du lait :" "=valeur cellule J64" "case de saisie"
> "valeur actuelle du pain :" "=valeur cellule J67" "case de saisie"
> "valeur actuelle de la bière :" "=valeur cellule J68" "case de saisie"
> OK ou ANNULER
>
> chaque saisie modifie la cellule qui est en valeur dans le texte.
>
> merci de votre aide, je bosse dessus, et je prend tout ce que vous pouvez
> m'aidez.
>
> YANN
>
>