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

Userform affichage

6 réponses
Avatar
JulieH
Bonjour à toutes et tous,

J'ai bien avancé dans mon projet et, en grande partie avec l'aide de
JB, j'ai réussi des choses que je ne pensais pas imaginable dans EXCEL.

Mon nouveau problème est une compilation de deux choses qui
fonctionnent dans un autre contexte mais que je n'arrive pas à adapter.
Le voici exposé de manière très simplifiée

J'ai divisé un userform en 2 parties.

La première partie correspond à de la saisie. On y trouve 5 Textbox.
Dans la 1, un lecteur de code barre me permet d'afficher un numéro
d'animal. Le code de la macro permet de retrouver dans une liste
(Feuille 1 - Colonne A) le numéro affiché et de copier dans les colonnes
suivantes (même ligne - Colonne B à E) les valeurs saisies dans les 4
Textbox suivantes.

Un bouton derrière lequel se trouve le code suivant permet de le faire
sans problème :
Private Sub CmdB1_UF1_Click()
Set x = [Feuil1].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If Not x Is Nothing Then
For i = 2 To 5
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
End Sub

Dans la seconde partie, je souhaite voir s'afficher un historique de
données correspondant au numéro indiqué dans la Textbox1, dès validation
de celle-ci.
Cet historique se situe en Feuille 2. Il y a en colonne A la liste des
numéros d'animaux et dans les colonnes suivantes (B à C) des données que
je souhaite voir apparaître dans les Textbox 6 à 7.

J'ai nommé "tatouage" la colonne A de la Feuille 2 et "BDAnimaux"
l'ensemble des données de la feuille 2 (A2:C1000). Pourtant le code
suivant ne fonctionne pas :

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
p = Application.Match(Me.TextBox1.Value, [tatouage], 0)
If Not IsError(p) Then
For i = 6 To 7
Application.Index([BDAnimaux], p, i)
UserForm1.Controls("textbox" & i) = Application.Index([BDAnimaux], p,
i - 4)
Next i
End sub

Quelqu'un peut-il me dire pourquoi ou me donner une autre piste ?

Merci d'avance

Julie

6 réponses

Avatar
JP25
Bonsoir,
Essaie ce lien tu vas sur l'userform et fais F5
Regarde les textebox quand change
Peut etre t'en inspirer, à adapter
http://cjoint.com/?hjsu128KyL

--
Cordialement
JP25


"JulieH" a écrit dans le message de news:

Bonjour à toutes et tous,

J'ai bien avancé dans mon projet et, en grande partie avec l'aide de JB,
j'ai réussi des choses que je ne pensais pas imaginable dans EXCEL.

Mon nouveau problème est une compilation de deux choses qui fonctionnent
dans un autre contexte mais que je n'arrive pas à adapter. Le voici exposé
de manière très simplifiée

J'ai divisé un userform en 2 parties.
La première partie correspond à de la saisie. On y trouve 5 Textbox. Dans
la 1, un lecteur de code barre me permet d'afficher un numéro d'animal. Le
code de la macro permet de retrouver dans une liste (Feuille 1 - Colonne
A) le numéro affiché et de copier dans les colonnes suivantes (même
ligne - Colonne B à E) les valeurs saisies dans les 4 Textbox suivantes.

Un bouton derrière lequel se trouve le code suivant permet de le faire
sans problème :
Private Sub CmdB1_UF1_Click()
Set x = [Feuil1].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If Not x Is Nothing Then
For i = 2 To 5
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
End Sub

Dans la seconde partie, je souhaite voir s'afficher un historique de
données correspondant au numéro indiqué dans la Textbox1, dès validation
de celle-ci.
Cet historique se situe en Feuille 2. Il y a en colonne A la liste des
numéros d'animaux et dans les colonnes suivantes (B à C) des données que
je souhaite voir apparaître dans les Textbox 6 à 7.

J'ai nommé "tatouage" la colonne A de la Feuille 2 et "BDAnimaux"
l'ensemble des données de la feuille 2 (A2:C1000). Pourtant le code
suivant ne fonctionne pas :

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
p = Application.Match(Me.TextBox1.Value, [tatouage], 0)
If Not IsError(p) Then
For i = 6 To 7
Application.Index([BDAnimaux], p, i)
UserForm1.Controls("textbox" & i) = Application.Index([BDAnimaux], p,
i - 4)
Next i
End sub

Quelqu'un peut-il me dire pourquoi ou me donner une autre piste ?

Merci d'avance

Julie


Avatar
JulieH
Bonsoir,

Je te remercie pour la rapidité de ta réponse.
Malheureusement je n'ai rien touvé qui corresponde à ce que je cherche.
Il me faut bien que la partie de droite reprenne des données venant
d'ailleurs. Cependant, il faut d'abord aller retrouver la valeur de la
Textbox1 dans une autre feuille.

Julie

Bonsoir,
Essaie ce lien tu vas sur l'userform et fais F5
Regarde les textebox quand change
Peut etre t'en inspirer, à adapter
http://cjoint.com/?hjsu128KyL



Avatar
JB
Bonsoir,

Utiliser CDbl() pour convertir le code en numérique?

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
p = Application.Match(CDbl(Me.TextBox1.Value), [tatouage], 0)
If Not IsError(p) Then
For i = 6 To 7
UserForm1.Controls("textbox" & i) =
Application.Index([BDAnimaux], p, i - 4)
Next i
End If
End Sub

JB

On 9 juil, 18:03, JulieH wrote:
Bonjour à toutes et tous,

J'ai bien avancé dans mon projet et, en grande partie avec l'ai de de
JB, j'ai réussi des choses que je ne pensais pas imaginable dans EXCEL.

Mon nouveau problème est une compilation de deux choses qui
fonctionnent dans un autre contexte mais que je n'arrive pas à adapter.
Le voici exposé de manière très simplifiée

J'ai divisé un userform en 2 parties.

La première partie correspond à de la saisie. On y trouve 5 T extbox.
Dans la 1, un lecteur de code barre me permet d'afficher un numéro
d'animal. Le code de la macro permet de retrouver dans une liste
(Feuille 1 - Colonne A) le numéro affiché et de copier dans les colon nes
suivantes (même ligne - Colonne B à E) les valeurs saisies dans les 4
Textbox suivantes.

Un bouton derrière lequel se trouve le code suivant permet de l e faire
sans problème :
Private Sub CmdB1_UF1_Click()
Set x = [Feuil1].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If Not x Is Nothing Then
For i = 2 To 5
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
End Sub

Dans la seconde partie, je souhaite voir s'afficher un historique de
données correspondant au numéro indiqué dans la Textbox1, dès val idation
de celle-ci.
Cet historique se situe en Feuille 2. Il y a en colonne A la list e des
numéros d'animaux et dans les colonnes suivantes (B à C) des donnée s que
je souhaite voir apparaître dans les Textbox 6 à 7.

J'ai nommé "tatouage" la colonne A de la Feuille 2 et "BDAnimau x"
l'ensemble des données de la feuille 2 (A2:C1000). Pourtant le code
suivant ne fonctionne pas :

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
p = Application.Match(Me.TextBox1.Value, [tatouage], 0)
If Not IsError(p) Then
For i = 6 To 7
Application.Index([BDAnimaux], p, i)
UserForm1.Controls("textbox" & i) = Application.Index([BDAnimaux], p,
i - 4)
Next i
End sub

Quelqu'un peut-il me dire pourquoi ou me donner une autre piste ?

Merci d'avance

Julie


Avatar
JulieH
Bonsoir et merci pour ton aide,

A ma grande déception car j'y croyais, ta solution n'a rien changé au
problème.

Julie


Bonsoir,

Utiliser CDbl() pour convertir le code en numérique?

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
p = Application.Match(CDbl(Me.TextBox1.Value), [tatouage], 0)
If Not IsError(p) Then
For i = 6 To 7
UserForm1.Controls("textbox" & i) > Application.Index([BDAnimaux], p, i - 4)
Next i
End If
End Sub

JB

On 9 juil, 18:03, JulieH wrote:
Bonjour à toutes et tous,

J'ai bien avancé dans mon projet et, en grande partie avec l'aide de
JB, j'ai réussi des choses que je ne pensais pas imaginable dans EXCEL.

Mon nouveau problème est une compilation de deux choses qui
fonctionnent dans un autre contexte mais que je n'arrive pas à adapter.
Le voici exposé de manière très simplifiée

J'ai divisé un userform en 2 parties.

La première partie correspond à de la saisie. On y trouve 5 Textbox.
Dans la 1, un lecteur de code barre me permet d'afficher un numéro
d'animal. Le code de la macro permet de retrouver dans une liste
(Feuille 1 - Colonne A) le numéro affiché et de copier dans les colonnes
suivantes (même ligne - Colonne B à E) les valeurs saisies dans les 4
Textbox suivantes.

Un bouton derrière lequel se trouve le code suivant permet de le faire
sans problème :
Private Sub CmdB1_UF1_Click()
Set x = [Feuil1].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If Not x Is Nothing Then
For i = 2 To 5
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
End Sub

Dans la seconde partie, je souhaite voir s'afficher un historique de
données correspondant au numéro indiqué dans la Textbox1, dès validation
de celle-ci.
Cet historique se situe en Feuille 2. Il y a en colonne A la liste des
numéros d'animaux et dans les colonnes suivantes (B à C) des données que
je souhaite voir apparaître dans les Textbox 6 à 7.

J'ai nommé "tatouage" la colonne A de la Feuille 2 et "BDAnimaux"
l'ensemble des données de la feuille 2 (A2:C1000). Pourtant le code
suivant ne fonctionne pas :

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
p = Application.Match(Me.TextBox1.Value, [tatouage], 0)
If Not IsError(p) Then
For i = 6 To 7
Application.Index([BDAnimaux], p, i)
UserForm1.Controls("textbox" & i) = Application.Index([BDAnimaux], p,
i - 4)
Next i
End sub

Quelqu'un peut-il me dire pourquoi ou me donner une autre piste ?

Merci d'avance

Julie






Avatar
JB
http://cjoint.com/?hju1EzFfwD

JB

On 9 juil, 20:25, JulieH wrote:
Bonsoir et merci pour ton aide,

A ma grande déception car j'y croyais, ta solution n'a rien cha ngé au
problème.

Julie




Bonsoir,

Utiliser CDbl() pour convertir le code en numérique?

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
p = Application.Match(CDbl(Me.TextBox1.Value), [tatouage], 0)
If Not IsError(p) Then
For i = 6 To 7
UserForm1.Controls("textbox" & i) =
Application.Index([BDAnimaux], p, i - 4)
Next i
End If
End Sub

JB

On 9 juil, 18:03, JulieH wrote:
Bonjour à toutes et tous,

J'ai bien avancé dans mon projet et, en grande partie avec l 'aide de
JB, j'ai réussi des choses que je ne pensais pas imaginable dans EXC EL.

Mon nouveau problème est une compilation de deux choses qui
fonctionnent dans un autre contexte mais que je n'arrive pas à adapt er.
Le voici exposé de manière très simplifiée

J'ai divisé un userform en 2 parties.

La première partie correspond à de la saisie. On y trouve 5 Textbox.
Dans la 1, un lecteur de code barre me permet d'afficher un numéro
d'animal. Le code de la macro permet de retrouver dans une liste
(Feuille 1 - Colonne A) le numéro affiché et de copier dans les co lonnes
suivantes (même ligne - Colonne B à E) les valeurs saisies dans le s 4
Textbox suivantes.

Un bouton derrière lequel se trouve le code suivant permet d e le faire
sans problème :
Private Sub CmdB1_UF1_Click()
Set x = [Feuil1].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If Not x Is Nothing Then
For i = 2 To 5
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
End Sub

Dans la seconde partie, je souhaite voir s'afficher un histori que de
données correspondant au numéro indiqué dans la Textbox1, dès validation
de celle-ci.
Cet historique se situe en Feuille 2. Il y a en colonne A la l iste des
numéros d'animaux et dans les colonnes suivantes (B à C) des donn ées que
je souhaite voir apparaître dans les Textbox 6 à 7.

J'ai nommé "tatouage" la colonne A de la Feuille 2 et "BDAni maux"
l'ensemble des données de la feuille 2 (A2:C1000). Pourtant le code
suivant ne fonctionne pas :

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolea n)
p = Application.Match(Me.TextBox1.Value, [tatouage], 0)
If Not IsError(p) Then
For i = 6 To 7
Application.Index([BDAnimaux], p, i)
UserForm1.Controls("textbox" & i) = Application.Index([BDAnimaux] , p,
i - 4)
Next i
End sub

Quelqu'un peut-il me dire pourquoi ou me donner une autre piste ?

Merci d'avance

Julie- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -




Avatar
JulieH
Oups !!!,

Je viens de réaliser un petit fichier exemple avec uniquement ce que
j'ai décrit et tout fonctionne parfaitement.

Je dois avoir un autre problème dans mon application. Je reviendrai si
problème insoluble (pour moi).

Avec mes excuses, bonne soirée.

Julie

Bonsoir,

Utiliser CDbl() pour convertir le code en numérique?

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
p = Application.Match(CDbl(Me.TextBox1.Value), [tatouage], 0)
If Not IsError(p) Then
For i = 6 To 7
UserForm1.Controls("textbox" & i) > Application.Index([BDAnimaux], p, i - 4)
Next i
End If
End Sub

JB

On 9 juil, 18:03, JulieH wrote:
Bonjour à toutes et tous,

J'ai bien avancé dans mon projet et, en grande partie avec l'aide de
JB, j'ai réussi des choses que je ne pensais pas imaginable dans EXCEL.

Mon nouveau problème est une compilation de deux choses qui
fonctionnent dans un autre contexte mais que je n'arrive pas à adapter.
Le voici exposé de manière très simplifiée

J'ai divisé un userform en 2 parties.

La première partie correspond à de la saisie. On y trouve 5 Textbox.
Dans la 1, un lecteur de code barre me permet d'afficher un numéro
d'animal. Le code de la macro permet de retrouver dans une liste
(Feuille 1 - Colonne A) le numéro affiché et de copier dans les colonnes
suivantes (même ligne - Colonne B à E) les valeurs saisies dans les 4
Textbox suivantes.

Un bouton derrière lequel se trouve le code suivant permet de le faire
sans problème :
Private Sub CmdB1_UF1_Click()
Set x = [Feuil1].[A:A].Find(what:=Me.TextBox1, lookat:=xlWhole)
If Not x Is Nothing Then
For i = 2 To 5
If IsNumeric(Me("textbox" & i)) Then
Cells(x.Row, i) = CDbl(Me("textbox" & i))
Else
Cells(x.Row, i) = Me("textbox" & i)
End If
Me("textbox" & i) = ""
Next i
End Sub

Dans la seconde partie, je souhaite voir s'afficher un historique de
données correspondant au numéro indiqué dans la Textbox1, dès validation
de celle-ci.
Cet historique se situe en Feuille 2. Il y a en colonne A la liste des
numéros d'animaux et dans les colonnes suivantes (B à C) des données que
je souhaite voir apparaître dans les Textbox 6 à 7.

J'ai nommé "tatouage" la colonne A de la Feuille 2 et "BDAnimaux"
l'ensemble des données de la feuille 2 (A2:C1000). Pourtant le code
suivant ne fonctionne pas :

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
p = Application.Match(Me.TextBox1.Value, [tatouage], 0)
If Not IsError(p) Then
For i = 6 To 7
Application.Index([BDAnimaux], p, i)
UserForm1.Controls("textbox" & i) = Application.Index([BDAnimaux], p,
i - 4)
Next i
End sub

Quelqu'un peut-il me dire pourquoi ou me donner une autre piste ?

Merci d'avance

Julie