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...
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
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...
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...
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
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...
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...
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
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...
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...
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...
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.
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
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 ....
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...