Code à expliquer
Salut Bob salut le forum, je m'arrache les cheveux sur ce coup. J'avais l'impression d'avoir réglé le souci, mais il revient à la charge. On expérimentant le formulaire je remarque toujours les mêmes erreurs et pourtant j'ai suivi les conseils de Bob. Je m'explique, le code ci-dessous est très résistant au changement pour envoyer les données sur la feuille "traces" surtout sur la ligne 3. A chaque fois je valide, le formulaire m'efface tout. Help svp
With Sheets("Traces")
Set R = .Range("B4:B" & lgn - 1).Find(Cells(lgn, 2), , xlValues, xlWhole)
If Not R Is Nothing Then .Rows(R.Row).Delete
Set f = Sheets("Fiche")
lgn = Application.Max(3, .Range("C" & Rows.Count).End(xlUp)(2).Row)
.Range("A" & lgn) = Now
.Range("B" & lgn) = ComboBox28
f.Range("C1") = ComboBox28
For i = 1 To 27
If i > 0 And i < 6 Then
.Cells(lgn - 1, i + 2) = Val(Controls("ComboBox" & i))
f.Cells(6, i) = Val(Controls("ComboBox" & i))
ElseIf i > 5 And i < 9 Then
.Cells(lgn - 1, i + 3) = Val(Controls("ComboBox" & i))
Bonsoir wall
je désespère
je t'es corrigé quelques lignes mais tu n'en tiens pas compte
Maintenant je m'embrouille tout seul
le souci maintenant c'est lgn
tu détermine lgn de la feuille Saisie1,
puis tu renvoies les moyennes sur la feuille saisie
puis tu détermine dans la plage de B4 a derniere ligne de la feuille saisie pour trouvé la date sur la colonne B de saisie et non A
Corrigé ça donne
Set R = .Range("B3:B" & .Range("B" & Rows.Count).End(xlUp).Row).Find(Sheets("Saisie1").Cells(lgn, 1), , xlValues, xlWhole)et vu que tu as déplacé le row.delete, tu n'as plus besoin de lgn-1
For i = 1 To 27
If i > 0 And i < 6 Then
.Cells(lgn, i + 2) = Val(Controls("ComboBox" & i))
f.Cells(6, i) = Val(Controls("ComboBox" & i))
ElseIf i > 5 And i < 9 Then
.Cells(lgn, i + 3) = Val(Controls("ComboBox" & i))
f.Cells(11, i - 5) = Val(Controls("ComboBox" & i))
ElseIf i > 8 And i < 12 Then
.Cells(lgn, i + 4) = Val(Controls("ComboBox" & i))
f.Cells(16, i - 8) = Val(Controls("ComboBox" & i))
ElseIf i = 12 Then
.Cells(lgn, i + 5) = Val(Controls("ComboBox" & i))
f.Cells(21, 1) = Val(Controls("ComboBox" & i))
ElseIf i > 12 And i < 18 Then
.Cells(lgn, i + 5) = Val(Controls("ComboBox" & i))
f.Cells(26, i - 12) = Val(Controls("ComboBox" & i))
ElseIf i > 17 And i < 20 Then
.Cells(lgn, i + 6) = Val(Controls("ComboBox" & i))
f.Cells(31, i - 17) = Val(Controls("ComboBox" & i))
ElseIf i > 19 And i < 22 Then
.Cells(lgn, i + 7) = Val(Controls("ComboBox" & i))
f.Cells(36, i - 19) = Val(Controls("ComboBox" & i))
ElseIf i > 21 And i < 28 Then
.Cells(lgn, i + 8) = Val(Controls("ComboBox" & i)) '"Traces"
f.Cells(41, i - 21) = Val(Controls("ComboBox" & i))Bonsoir à tous, excuse moi Bob mais je crois que j'explique mal ma difficulté. En fait, le code pour la feuille "saisie1" qui envoie les moyennes fonctionne très bien : Set cell = .Range("A4:A" & .Range("A" & Rows.Count).End(xlUp).Row).Find(ComboBox28.Value, lookat:=xlWhole, LookIn:=xlValues)
If Not cell Is Nothing Then
lgn = cell.Row
Else
lgn = .Range("A" & Rows.Count).End(xlUp)(2).Row
End If
'On reporte les notes de la fiche sur la feuille ''saisie1''
'.Range("A" & lgn) = ComboBox28
.Range("G" & lgn) = TextBox2 * 1.......................................................
C'est ce 2ème code
With Sheets("Traces")
Set R = .Range("B3:B" & lgn - 1).Find(Cells(lgn, 2), , xlValues, xlWhole)
If Not R Is Nothing Then .Rows(R.Row).Delete
Set f = Sheets("Fiche")
lgn = Application.Max(3, .Range("C" & Rows.Count).End(xlUp)(2).Row)
.Range("A" & lgn) = Now
.Range("B" & lgn) = ComboBox28
f.Range("C1") = ComboBox28
For i = 1 To 27
If i > 0 And i < 6 Then
.Cells(lgn, i + 2) = Val(Controls("ComboBox" & i))
f.Cells(6, i) = Val(Controls("ComboBox" & i))
qui me cause des soucis pour envoyer les valeurs sur la feuille "Traces" car l'erreur est toujours la même c'est à dire que quelque soit la donnée que j'envoie, la ligne 3 du tableau ne change et la valeur envoyée devient un doublon sur la ligne 4.
J'ai suivi tous tes conseils mais en expérimentant le formulaire avec lgn et lgn-1 avec B3:B ou B4:B, l'erreur est toujours là. J'avoue que c'est un casse tête et j'en suis désolé... Je viens d'enlever la date de saisie pour éviter une ambiguïté supplémentaire je viens le fichier sans modifs ou la tout fonctionne sauf cette feuille "Traces" qui m'a carrément explosé le weekend
Bonsoir à tous, forum, merci maitre Bob pour cette prestation, tu m'as enlevé une épine. C'est très sympa de ta part d'avoir pris le temps et vive une fois le partage. Bonne soirée et je ne toucherai pas à ce code, du moins pour le moment. Bonne soirée à tous
Salut à tous, forum, avec ce code j'arrivais à récupérer la valeur de la colonne P de la feuille "Observation1" mais quand j'ai modifié mon tableau et donc j'ai voulu simplement récupéré la valeur de la colonne K et l'afficher sur la textbox9 de l'usf. Pas moyen. J'ai du peut être loupé quelque chose, auriez vous une idée et commenter la ligne set R = .Colums(6) ...svp? Merci
(avant c'était la textbox10 et la colonne P)
If Me.ComboBox1.Value = "Résultats 1" Then Set ShEval = Sheets("Observation1")
If Me.ComboBox1.Value = "Résultats 2" Then Set ShEval = Sheets("Observation2")
With ShEval
Set R = .Columns(6).Find(Me.ComboBox2.Value, , xlValues, xlWhole)
If Not R Is Nothing Then
Me.TextBox9 = .Cells(R.Row, "K").Value
End If
Bonsoir wall
Peut-être que le nom ne se trouve plus en colonne 6 (F)
Merci Bob tu me sauves bonne soirée à tous.....
Bonjour à tous, forum,
Je viens solliciter vos compétences et votre patience, merci à Bob pour ton investissement. Tu as corrigé mon code mais je n'arrive pas à l'adapter à mon fichier, du coup, j'ai fait des changements pour la dernière fois sur mon tableau "Saisie1" mais le code n'est pas fonctionnel sur mon fichier et pourtant j'ai travaillé dessus. Les doublons sont toujours sur la feuille "Traces" et ça m’embête vraiment. Si quelqu'un et si tu veux bien consacrer un moment pour le régler. J'ai fait un arret sur la macro et ça bloque sur la ligne 280 next j. Merci d'avance
(le code en question)
With Sheets("Traces")
Set R = .Range("B3:B" & .Range("B" & Rows.Count).End(xlUp).Row).Find(Sheets("Saisie1").Cells(lgn, 1), , xlValues, xlWhole)
If Not R Is Nothing Then .Rows(R.Row).Delete
Set f = Sheets("Fiche")
lgn = Application.Max(3, .Range("B" & Rows.Count).End(xlUp)(2).Row)
.Range("A" & lgn) = Now
.Range("B" & lgn) = ComboBox28
f.Range("C1") = ComboBox28
For i = 1 To 27
If i > 0 And i < 6 Then
.Cells(lgn, i + 2) = Val(Controls("ComboBox" & i))
f.Cells(6, i) = Val(Controls("ComboBox" & i))
Bonsoir wall
tu as modifié la feuille saisie1 donc la colonne de recherche du nom n'est plus A mais G donc 7 au lieu de 1
Set R = .Range("B3:B" & .Range("B" & Rows.Count).End(xlUp).Row).Find(Sheets("Saisie1").Cells(lgn, 7), , xlValues, xlWhole)Bonsoir à tous, bien vu et un grand merci. Bonne soirée