Plusieurs conditions pour valeurs textbox

folls

XLDnaute Junior
Bonjour à tout le forum,
J'ai un petit soucis depuis quelques jours et malgrés mes recherches deans le forum je n'arrive pas à trouver mon erreur (je débute)
Je désire si trois conditions sont remplies dans mes textbox12, 13 et 14 par apport à des valeurs se situant sur la feuille "données" dans les cellules respective a2,a15,a28... pour textbox12; a3,a16,a29... pour textbox13 et b3,b16,b29... pour textbox14 (les données de la feuille vont jusqu'à "a378").
Si par exemple textbox12 = a2 , textbox13 = a3 et textbox14 = b3 alors
Textbox1 = b4 ;Textbox2 = b5 ;...;Textbox11 = b15 (11textbox de destination).
Je ne sais pas si j'ai été clair dans mes excplications!!
Pour l'instant j'ai écrit (et réécrit!) ceci que pour une condition mais déjà çà bloque. Je suppose qu'il faut écrire à chaque fois toutes les conditions pour chaque solution!

Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 11
If TextBox12.Value = Sheets("Tableau").Range("a2").Value Then

If TextBox13.Value = Sheets("Tableau").Range("a3").Value Then
If TextBox14.Value = Sheets("Tableau").Range("b3").Value Then

Me.Controls(TextBox & i).Value = Sheets("tableau").Range("b4" & i).Value
i = i + 1
End If
End If
End If
Next
End Sub

Merci par avace à vous tous pour votre aide.
Folls...
 

skoobi

XLDnaute Barbatruc
Re : Plusieurs conditions pour valeurs textbox

Bonjour,

au lieu d'écrire:

Code:
     If TextBox12.Value = Sheets("Tableau").Range("a2").Value Then
        If TextBox13.Value = Sheets("Tableau").Range("a3").Value Then
            If TextBox14.Value = Sheets("Tableau").Range("b3").Value Then

tu peux écrire:

Code:
     If TextBox12.Value = Sheets("Tableau").Range("a2").Value And _
TextBox13.Value = Sheets("Tableau").Range("a3").Value And _
TextBox14.Value = Sheets("Tableau").Range("b3").Value Then

Il y a une erreur ici (en rouge à enlever):

Code:
 Me.Controls(TextBox & i).Value = Sheets("tableau").Range("b[COLOR=Red][B]4[/B][/COLOR]" & i).Value

Enfin, comme tu as une boucle For ... Next, "i" s'incrémente automatiquement, donc tu peux enlever:

Code:
 i = i + 1

Et supprimes les 2 "End If" en trop.
 

folls

XLDnaute Junior
Re : Plusieurs conditions pour valeurs textbox

Bonjour Scooby et merci de tes explications.
Je viends de faire exactement ce que tu m'as écris mais toujours rien dans mes Textbox de destination! Je débute mais j'arrive à comprendre un peu et je ne vois pas mon erreur.

Private Sub UserForm_Initialize()
For i = 1 To 11
If TextBox12.Text = Sheets("Tableau").Range("a2").Value _
And TextBox13.Text = Sheets("Tableau").Range("a3").Value _
And TextBox14.Text = Sheets("Tableau").Range("b3").Value Then
Me.Controls("TextBox" & i).Value = Sheets("Tableau").Range("b" & i).Value
End If
Next
End Sub

Merci de ton aide
(Au fait désolé si j'ai mis longtemps à répondre mais j'ai vu que j'avais deux discussion en cours sur le forum pour le même sujet????)
Folls...
 

folls

XLDnaute Junior
Re : Plusieurs conditions pour valeurs textbox

Merci Skooby
j'ai réussi avec tout ce que tu m'as donné et j'ai un peu modifié pour un accés a chaque données:

Private Sub UserForm_Activate()
Dim i As Integer

For i = 4 To 14
' Allemagne AtelierA Année1999
If Détail.TextBox12.Text = Sheets("Tableau").Range("a2").Value _
And Détail.TextBox13.Text = Sheets("Tableau").Range("a3").Value _
And Détail.TextBox14.Text = Sheets("Tableau").Range("b3").Value Then
Me.Controls("TextBox" & i - 3).Value = Sheets("Tableau").Range("b" & i).Value
End If
Next
For i = 17 To 27
' Allemagne AtelierD Année1999
If Détail.TextBox12.Text = Sheets("Tableau").Range("a15").Value _
And Détail.TextBox13.Text = Sheets("Tableau").Range("a16").Value _
And Détail.TextBox14.Text = Sheets("Tableau").Range("b16").Value Then
Me.Controls("TextBox" & i - 16).Value = Sheets("Tableau").Range("b" & i).Value
End If
Next
For i = 30 To 40
' Allemagne AtelierF Année1999
If Détail.TextBox12.Text = Sheets("Tableau").Range("a28").Value _
And Détail.TextBox13.Text = Sheets("Tableau").Range("a29").Value _
And Détail.TextBox14.Text = Sheets("Tableau").Range("b29").Value Then
Me.Controls("TextBox" & i - 29).Value = Sheets("Tableau").Range("b" & i).Value
End If
Next
For i = 43 To 53
' Allemagne AtelierG Année1999
If Détail.TextBox12.Text = Sheets("Tableau").Range("a41").Value _
And Détail.TextBox13.Text = Sheets("Tableau").Range("a42").Value _
And Détail.TextBox14.Text = Sheets("Tableau").Range("b42").Value Then
Me.Controls("TextBox" & i - 42).Value = Sheets("Tableau").Range("b" & i).Value
End If
Next
End Sub

Je pense qu'il doit y avoir plus simple vu qu'il me reste encore 524 données à inscrire comme çà.
Encore merci !
@+
Folls...
 

skoobi

XLDnaute Barbatruc
Re : Plusieurs conditions pour valeurs textbox

Re,

si je ne me suis pas trompé, ça donne ceci:

Code:
For i = 4 To 53
    If i > j Then
        i = j + 3
        j = j + 13
    Else
        If Détail.TextBox12.Text = Sheets("Tableau").Range("a" & j - 12).Value _
        And Détail.TextBox13.Text = Sheets("Tableau").Range("a" & j - 11).Value _
        And Détail.TextBox14.Text = Sheets("Tableau").Range("b" & j - 11).Value Then
        Me.Controls("TextBox" & i - (j - 11)).Value = Sheets("Tableau").Range("b" & i).Value
        End If
    End If
Next
A tester.
 

folls

XLDnaute Junior
Re : Plusieurs conditions pour valeurs textbox

Rebonjour à tous et merci à toi Skooby
Je te remercie d'avoir étudié mon cas
Je vérifie dès ce soir et je te tiends au courant
En attendant ta réponse j'ai fait mon code mais la procédure est beaucoup trop longue donc erreur.
Je me reconnecterais un peu plus tard (les trains n'attendent pas)
et encore merci!
@+ Folls...
 

folls

XLDnaute Junior
Re : Plusieurs conditions pour valeurs textbox

Bonsoir à tout le forum, Pierrot93, Skooby,...
Je viens de tester ce que tu as écris dans ton message et je n'obtient pas de valeurs en retour!
Je me suis permis de modifier la dernière ligne:
à la place de:
Me.Controls("TextBox" & i - (j - 11))
j'ai mis:
Me.Controls("TextBox" & i - (j - 2))
Par contre je ne comprend pas bien le fait qu'il n'y a pas de "boucle" sur les 11 textbox (textbox1 jusqu'à textbox11) , en effet par apport au début ou tu détermines i de 4 à 53. Est ce que le problème ne viendrait pas de là?
Je vais continuer à m'y atteler (dur dur mais je veux y arriver).
La solution est déjà bien avancé...
@+
Folls...
 

skoobi

XLDnaute Barbatruc
Re : Plusieurs conditions pour valeurs textbox

Re,

pour vérifier que les 11 textbox soient pris en compte tu peux faire la vérification comme ceci (en bleu à ajouter):

Code:
Sub essai()
For i = 4 To 53
    If i > j Then
        i = j + 3
        j = j + 13
    Else
        If Détail.TextBox12.Text = Sheets("Tableau").Range("a" & j - 12).Value _
        And Détail.TextBox13.Text = Sheets("Tableau").Range("a" & j - 11).Value _
        And Détail.TextBox14.Text = Sheets("Tableau").Range("b" & j - 11).Value Then
        Me.Controls("TextBox" & i - (j - 11)).Value = Sheets("Tableau").Range("b" & i).Value
        [B][COLOR=blue]Debug.Print Me.Controls("TextBox" & i - (j - 11)).Name
[/COLOR][/B]        End If
    End If
Next
End Sub

Au préalable, il faut ouvrir la fenêtre exécution Ctrl+G (ou menu affichage puis fenêtre d'éxecution) dans VBE.
Très utile car cela te permet de voir quelle valeur a une variable lors de l'exécution d'une macro ;)
 

folls

XLDnaute Junior
Re : Plusieurs conditions pour valeurs textbox

Bonjour à tout le forum et merci à toi Skooby,
car je lutte depuis hier soir sur ce code!!!
Je ne sais plus vraiment où le mettre car si je le mets dans USF_activate il me bloque carrément le fichier et dans d'autre il me renvoie une erreur dans un autre USF .
J'ai donc essayé ce que tu m'as joint, par contre je n'ai pas du tout comprendre!
La ligne à rajouter doit se mettre dans le code de l'USF?
Et pour voir le déroulement, faut-il lancer la procédure normalement ou faut il créer une macro avec ce code?
Désolé pour ma compréhension mais toutes ces données ne sont pour l'instant pour moi qu'un début de long apprentissage.
Merci
@+
Folls...
 

skoobi

XLDnaute Barbatruc
Re : Plusieurs conditions pour valeurs textbox

Re,

il faut que tu mettes tout le code (sans Sub essai() et End Sub) dans l'USF (désolé si je t'ai embrouillé avec cette macro "essai" :().

Et pour voir le déroulement, faut-il lancer la procédure normalement
Oui, lorsque tu auras fini, va dans VBE (l'éditeur de macro) puis regarde dans la fenêtre "exécution".
 

folls

XLDnaute Junior
Re : Plusieurs conditions pour valeurs textbox

Bonsoir à tous,
Merci, Skooby,
j'ai donc suivi la procédure et il s'avère qu'il n'y a rien dans la fenêtre execution après avoir lancé toute la procédure.
Ce qui voudrait dire qu'il n'y a eu aucune valeur de variable (bizarre non?)
donc des textbox vides au résultat final (je suppose)
Je continue à lutter mais...
@+
Folls...
 

folls

XLDnaute Junior
Re : Plusieurs conditions pour valeurs textbox

Re,
et encore merci,
Je te joins le fichier complet j'ai enlevé le superflus mais je ne pouvais pas t'envoyer que le USF vu qu'il est plus ou moins lié à des données d'autres USF (peut-être là le problème!).
Je suis désolé mais là je te laisse seul juge!
J'étais en train d'étudier un système mais dans l'autre sens limitant ainsi la procédure mais augmentant le nombre de USF.
@+
Folls...
 

Pièces jointes

  • mes monnaies.zip
    30.9 KB · Affichages: 30

skoobi

XLDnaute Barbatruc
Re : Plusieurs conditions pour valeurs textbox

Re,

wouuaouuu, faut suivre........

A mon avis il y a beaucoup plus simple, surtout pour ce qui s'agit de la sélection du pays par exemple.
Mais il faudrait que tu expliques depuis le début ce que tu veux faire car je pense qu'il y a plus simple que de passer par 6 USF.:eek:

Pour le problème actuel, il y avait 2 soucis (plus 2 erreurs dans la boucle)

1- dans le code du bouton "CommandButton1999" de l'USF "UserForm2_années", il faut d'abord affecter les valeurs de l'USF "Détail" puis ensuite ouvrir ce dernier:

Code:
Private Sub CommandButton1999_Click()
Détail.TextBox14.Value = Sheets("données").Range("b3").Value
Détail.TextBox13.Value = TextBox2.Value
Détail.TextBox12.Value = TextBox1.Value
Détail.Show

UserForm2_années.Hide
End Sub

Pense à corriger les autres boutons (à moins que tu revoie entièrement ton travail).

2- Tu as mis le bout de code que je t'ai envoyé au bon endroit sauf que la condition ne se vérifiait jamais car
Détail.TextBox14.Value renvoie la date sous forme de texte -> "1999"
et
Sheets("Tableau").Range("b" & j - 11).Value renvoie un nombre -> 1999

Voici la correction que j'ai apportée:

Code:
[B]Val([/B]Détail.TextBox14.Value[B])[/B] = Sheets("Tableau").Range("b" & j - 11).Value
Là ça marche.

Comme dis plus haut, sans te vexé, c'est une vraie usine à gaz ton fichier, il faudrait que tu expliques clairement ce que tu veux pour que l'on te guide (pas étonnant que tu ....
lutte depuis hier soir sur ce code!!!
...avec tous ces USF....)

Ci-joint le fichier modifié.
A te relire.
 

Pièces jointes

  • Mon dossier de monnaie (usf)envoi V1.zip
    39.5 KB · Affichages: 35

folls

XLDnaute Junior
Re : Plusieurs conditions pour valeurs textbox

Bonjour à tout le forum,
Skooby
Je te remercie d'avoir étudié cette "usine à gaz", et tu comprendras pourquoi je ne pouvais pas dissocier un USF pour te l'envoyer!!
En fin de compte c'est relativement simple:
En sélectionnant un pays sauf Allemagne ou Grèce on passe dans le USF pour selectionner une année, selon ces deux choix on passe à l'USF Données qui récupère dans les textbox les valeurs et selon celles ci prend les données corrrespondantes (pays: A2, A15, A28...; Année 1999: B3, B16, B29...; Année 2000: C3, C16, C29...;...) du tableau de la feuille2. Pour les deux autres pays on a un intermédiaire définissant un choix supplémentaire dans deux USF différents (1 pour l'Allemagne avec A3, A16, A29, A42 et A55 et un pour la Grèce avec trois valeurs dans 3 cellules A).
Toutes ces données sont donc répercutées dans l'USF Données auquel s'ajouteront d'autres fonctionnalités comme des photos, des variantes, ainsi que dans les checkbox savoir si elles existent ou non.
D'autre part dans celui ci je voulais aussi créér un moyen de validation de données et un bouton impression!
Si toutefois "l'usine à gaz n'explose pas avant!!!!!!"
Mais comme tu le dis si bien "il doit y avoir moyen de faire beaucoup plus simple!". Malheureusement mes connaissances ne me permettent pas pour l'instant de faire alors je fais ce que je peux (avec l'aide des Forums et de "Skooby"!).
Par contre pourrais tu me dire comment on peut voir le problème de date et de valeur (celà m'interresserait de savoir au cas où je parviens à élaborer un projet plus simple!!)?
Encore merci!
@+
Folls...
 

Discussions similaires

Réponses
11
Affichages
341
Réponses
4
Affichages
231

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux