Code à expliquer

capture d ecran 2015 05 25 16 42 44

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

5wall-v-essai1.xlsm (89.17 Ko)

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

4wall-v-essai2.xlsm (89.24 Ko)

re

modifié les exit sub

modifié set R

modifié lgn-1

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

7wall-vadapt1.xlsm (85.81 Ko)

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

Rechercher des sujets similaires à "code expliquer"