Userform et données

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
sunburn
Le #19807121
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


MichDenis
Le #19807351
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" 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
sunburn
Le #19807471
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" 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




sunburn
Le #19807461
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" 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




sunburn
Le #19807551
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
-----


MichDenis
Le #19807661
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" 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" 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




MichDenis
Le #19807651
À 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" 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
-----


sunburn
Le #19807641
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" 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" > 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
>
>



Publicité
Poster une réponse
Anonyme