Envoyer des données sur 2 feuilles avec condition

alut à tous,

Je viens d'insérer un code pour pouvoir envoyer les résultats sur avec condition sur la feuille "Traces" et "Eval1" si c'est je sélectionne sur la liste déroulante "resultats1" et quand c'est "résultats2" mes résultats sont transférés sur les feuiles "Traces2" et "Eval2". Suite à ce code, j'obtiens des erreurs. Auriez vous une solution? Merci d'avance

Private Sub ComboBox1_Change() 'au changement de la ComboBox1

If Me.ComboBox1.Value = "Résultats 1" Then Set O = Sheets("Traces","Eval1")

If Me.ComboBox1.Value = "Résultats 2" Then Set O = Sheets("Traces2","Eval2")

Me.ComboBox2.Value = ""

End Sub

End If

Set cell = .Range("G4:G" & .Range("G" & Rows.Count).End(xlUp).Row).Find(ComboBox30.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 ne reporte que ces notes sur la feuille ''Eval1''ou "Eval2"

If TextBox1 = "" Then End

.Range("H" & lgn) = TextBox1 * 1

If TextBox2 = "" Then End

.Range("I" & lgn) = TextBox2 * 1

If TextBox3 = "" Then End

.Range("J" & lgn) = TextBox3 * 1

If TextBox4 = "" Then End

.Range("K" & lgn) = TextBox4 * 1

If TextBox5 = "" Then End

.Range("L" & lgn) = TextBox5 * 1

If TextBox6 = "" Then End

.Range("M" & lgn) = TextBox6 * 1

If TextBox7 = "" Then End

.Range("N" & lgn) = TextBox7 * 1

If TextBox8 = "" Then End

.Range("O" & lgn) = TextBox8 * 1

End With

7wall-v03.xlsm (104.21 Ko)

Bonsoir,

Quand tu dis :

Suite à ce code, j'obtiens des erreurs.

Tu es un peu loin de la vérité....

Tout d'abord, tu ne peux pas définir deux onglets dans une variable "Worksheet" (comme tu as défini "O") !

Ensuite, que vient faire le end sub dans ton code?

Et le .Find(qui recherche la valeur du Combobox30)?

Et tu ne références aucun onglet à la définition de ta cellule (nommée cell) !

Bref, je n'ai pas tout analysé (notamment tes modules de classe), car ce qui me bloque un peu, c'est l'onglet où tu espère trouver ton Combobox????? par la méthode Find...

Pour ce soir, je ne vais pas te faire de promesses, mais commence déjà à revoir les quelques points cités supra

Bon courage

Bonjour Cousinhub, bonsoir le forum, je voulais insérer les valeurs de textbox9 dans la colonne A de la feuille Eval1 si le choix de la liste déroulante combobox1 est sur "résultats1" ou alors sur la feuille "Eval2" si le choix est "résultats2" de la même combobox1. Idem pour la textbox 10.

'On ne reporte que ces moyennes càd les textbox (1à8)+ textbox9 et10 sur la feuille ''Eval1''ou "Eval2" si respectivement on choisit résultats1 ou 2 de la combox 1

Le code fonctionne sauf quand je rajoute ce qui suit :

If Me.ComboBox1.Value = "Résultats 1" Then Set O = Sheets("Eval1")

If Me.ComboBox1.Value = "Résultats 2" Then Set O = Sheets("Eval2")

Me.ComboBox2.Value = ""

Set cell = .Range("H4:H" & .Range("H" & Rows.Count).End(xlUp).Row).Find(ComboBox2.Value, lookat:=xlWhole, LookIn:=xlValues) 'feuille "Eval1" Ou "Eval2"

If Not cell Is Nothing Then

lgn = cell.Row

Else

lgn = .Range("A" & Rows.Count).End(xlUp)(2).Row

End If

If TextBox1 = "" Then End

.Range("H" & lgn) = TextBox1 * 1

If TextBox2 = "" Then End

.Range("I" & lgn) = TextBox2 * 1

If TextBox3 = "" Then End

.Range("J" & lgn) = TextBox3 * 1

If TextBox4 = "" Then End

.Range("K" & lgn) = TextBox4 * 1

If TextBox5 = "" Then End

.Range("L" & lgn) = TextBox5 * 1

If TextBox6 = "" Then End

.Range("M" & lgn) = TextBox6 * 1

If TextBox7 = "" Then End

.Range("N" & lgn) = TextBox7 * 1

If TextBox8 = "" Then End

.Range("O" & lgn) = TextBox8 * 1

5wall-v03.xlsm (110.97 Ko)

Bonjour,

Euh, dans quelle procédure tu veux rajouter ces lignes?

Si c'est dans la procédure

Private Sub ComboBox1_Change() 'au changement de la ComboBox1

If Me.ComboBox1.Value = "Résultats 1" Then Set O = Sheets("Traces")
If Me.ComboBox1.Value = "Résultats 2" Then Set O = Sheets("Traces2")
Me.ComboBox2.Value = ""
.....

Il est tout à fait normal qu'il y ait un Bug (voire...)

Tu mets un point devant .Range, dans ta définition de cell

Set cell = .Range("H4:H" & .Range("H" & Rows.Count).End(xlUp).Row).Find(ComboBox2.Value, lookat:=xlWhole, LookIn:=xlValues)

Mais tu ne mets pas d'onglet de référence...

Comme souligné hier, il faut que tu fasses références à un onglet quelconque (O ou un autre...), style

With O (ou With Sheets("Eval1"), ou....
code
et terminer par 
End With

Et ensuite, tu recherches, toujours dans cette ligne, la valeur du Combobox2

Combobox2 que tu as mis à "" juste avant.....

Et dans la syntaxe du .Find, il faut mettre (valeur cherchée, après, rechercher dans, type de recherche...)

soit, dans ton cas :

.Find(ComboBox2.Value, , LookIn:=xlValues, lookat:=xlWhole,)

(Inverser xlvalues et xlWhole, et les mettre en 3ème et 4ème position)

Maintenant, si c'est dans une autre procédure, il faut dire laquelle (et à la rigueur, mettre ce code dans le futur fichier que tu vas joindre, après avoir déjà modifié les points cités)

Bon courage

Bonsoir à tous, j'ai fait les modifs conseillés mais je dois avoir loupé quelques détails, merci de bien vouloir jeter un oeil sur le code qui débog. Merci à vous

6wall-v04.xlsm (112.29 Ko)

Re-,

Euh, juste une petite question.....

Le code, tu l'as trouvé quelque part, ou tu l'as développé?

Parce je ne suis pas sûr que tu comprennes comment fonctionne ce code, ni comment l'exploiter, ni surtout le comprendre tout court.

With f

If Me.ComboBox1.Value = "Résultats 1" Then Set f = Sheets("Eval1")
If Me.ComboBox1.Value = "Résultats 2" Then Set f = Sheets("Eval2")
Me.ComboBox2.Value = ""

Set cell = .Range("H4:H" & .Range("H" & Rows.Count).End(xlUp).Row).Find(ComboBox2.Value, , LookIn:=xlValues, lookat:=xlWhole) 'feuille "Eval1" Ou "Eval2"

Tu continues à vouloir rechercher la valeur du combobox2, alors que tu viens de lui donner une valeur nulle....

Je pense qu'il vaut mieux que tu mettes ce bout de code dans le Change du Combobox2, car tant que celui-ci est vide, il ne sert à rien de remplir quoi que ce soit...

Ah, au fait, plutôt que te donner du tout cuit, je préfère que tu trouves par toi-même.....

Bon courage

Bonjour le forum, oui j'avoue que je travaille phrase par phrase ce code avec les copains de ce forum qui ont fait pour moi et qui m'ont aidé à réfléchir, Code par code galère après galère. Avec les classes cela devient compliqué pour moi. Avant j'avais 2 formulaires (userform) chacun envoie les données vers une feuille différente sans aucune possibilité de modifier les données enregistrées. Tout allait bien jusqu'à ce que je rajoute des conditions : un seul formulaire pour valider les données avec conditions si résultas 1 alors le formulaire envoie simultanément sur les feuilles "traces" toutes les données et uniquement les textboxs sur la feuille "eval1"......Quand c'est le résultat2 qui est sélectionné, on envoie vers "traces2" et sur "eval2"

Merci pour ceux qui m'ont aidé jusqu'au là afin de compléter ce code et aussi pour le finaliser.

J'ai modifié certaines choses et je ne comprends pas grand'chose tellement c'est compliqué......

8wall-v05.xlsm (112.30 Ko)

Bonjour,

Bon, c'est pas simple, si tu modifies tes fichiers à chaque échange...

Dans celui que tu viens de mettre, il y a 2 USF, et il manque les onglets "Eval1" et "Eval2"...

Je vais donc attendre que tu remettes un fichier "de base", c'est à dire ton vrai fichier de travail (sans données confidentielles, bien sûr)

De mémoire, dans les onglets "Eval1" et "Eval2", il y avait des formules, afin de récupérer les noms et prénoms des personnes à évaluer...

Était-ce bien utile? (ces formules)

Car par le biais de l'usf, tu peux très bien "modifier" ou "ajouter" une personne...

@ te relire

Bonsoir à tous, les formules dans eval1 et 2 ne sont pas utiles effectivement. je joints le fichier du document sur lequel je travaille et tant que je ne l'ai pas finalisé, je ne peux l'utiliser officiellement.

Merci beaucoup

7wall-v04.xlsm (113.90 Ko)

Bonjour,

J'ai modifié le code...

Regarde un peu, il est certain que cela ne respectera pas toutes tes volontés....

Fais des tests, et tu dis quoi...

9wall-v04h.xlsm (112.05 Ko)

Bonjour à tous, salut CousinHub, merci pour le tableau, mais je coince un peu car j'ai modifié la frame10 en supprimant 2combobox mais toutes mes valeurs sont décalées sur mes tableaux des feuilles "Traces, traces2 et Fiche" (Titre de la colonne 'autres 4'). Si cela ne vous dérange pas de m'aider ou de m’aiguiller pour modifier le code. Merci à vous tous pour le partage

10wall-v07.xlsm (104.12 Ko)
Rechercher des sujets similaires à "envoyer donnees feuilles condition"