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