Sélectionner d'après la valeur d'une textbox

Résolu
bipbip059 Messages postés 16 Date d'inscription dimanche 10 septembre 2006 Statut Membre Dernière intervention 1 mars 2009 - 25 sept. 2006 à 21:19
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 30 sept. 2006 à 13:36
bonsoir à tous

Sur mon userform j'ai placé quatre textbox 1,  2, 3, et 4 suivant les valeurs de la textbox 1 j'aimerai soit transféré les valeurs sur la feuille 1 et 2 d'excel ou la feuille 2 et 3.
Un exemple pour mieux comprendre :
-Si la valeur de textbox 1 est du type FRE-GRT alors les valeurs respectivecs de la textbox2, textbox3 et textbox4 sont placées en colonnes A, B, C et D des feuilles 2 et 3 d'excel
- Si par contre la valeur de textbox 1 est du type 25146 alors les valeurs de la texbox2, textbox3, et la textbox4 sont placées en colonnes A, B, C et D des feuilles 1 et 2 d'excel.

Merci d'avance pour votre aide

12 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
26 sept. 2006 à 02:35
Salut,


Il vaudrait mieux commencer par la valeur numérique (plus facile à cibler...)


If IsNumeric(textbox1) then

    DerniereLigne = Sheets("Feuil1").Cells.Find("*",Sheets("Feuil1").Range("A1"),,,xlByRows,xlPrevious).Row+1

    Sheets("Feuil1").Range("A" & DerniereLigne) = Textbox1
    Sheets("Feuil1").Range("B" & DerniereLigne) = Textbox2

    Sheets("Feuil1").Range("C" & DerniereLigne) = Textbox3

    Sheets("Feuil1").Range("D" & DerniereLigne) = Textbox4

    DerniereLigne = Sheets("Feuil2").Cells.Find("*",Sheets("Feuil2").Range("A1"),,,xlByRows,xlPrevious).Row+1

    Sheets("Feuil2").Range("A" & DerniereLigne) = Textbox1

    Sheets("Feuil2").Range("B" & DerniereLigne) = Textbox2

    Sheets("Feuil2").Range("C" & DerniereLigne) = Textbox3

    Sheets("Feuil2").Range("D" & DerniereLigne) = Textbox4

else

    DerniereLigne = Sheets("Feuil2").Cells.Find("*",Sheets("Feuil2").Range("A1"),,,xlByRows,xlPrevious).Row+1

    Sheets("Feuil2").Range("A" & DerniereLigne) = Textbox1

    Sheets("Feuil2").Range("B" & DerniereLigne) = Textbox2

    Sheets("Feuil2").Range("C" & DerniereLigne) = Textbox3

    Sheets("Feuil2").Range("D" & DerniereLigne) = Textbox4

    DerniereLigne = Sheets("Feuil3").Cells.Find("*",Sheets("Feuil3").Range("A1"),,,xlByRows,xlPrevious).Row+1

    Sheets("Feuil3").Range("A" & DerniereLigne) = Textbox1

    Sheets("Feuil3").Range("B" & DerniereLigne) = Textbox2

    Sheets("Feuil3").Range("C" & DerniereLigne) = Textbox3

    Sheets("Feuil3").Range("D" & DerniereLigne) = Textbox4

End if


Je n'ai pas testé, mais ça devrait aller

MPi
3
cs_carvals Messages postés 50 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 23 janvier 2008
28 sept. 2006 à 08:03
salut,


deux solutions:


DerniereLigne = Sheets("Feuil1").Cells.Find("*", Sheets("Feuil1").Range("A1"), , , xlByRows, xlNext).Row + 1
car le xlprevious fait remonter le curseur d'ou la reecriture constante de ta cellule

sinon pour trouver la derniere ligne je prefere la methode:

derniereligne = sheets("feuil1").range("A65536").end(xlUp).row + 1
ca commencera a ecrire a partir de la ligne 2 en revanche
si tu utilise ca oublies la gestion d'erreur

A+
carvals
3
bipbip059 Messages postés 16 Date d'inscription dimanche 10 septembre 2006 Statut Membre Dernière intervention 1 mars 2009
26 sept. 2006 à 07:23
salut,

encore merci pour ces explications, je teste et je t'informe du résultat.


 
0
bipbip059 Messages postés 16 Date d'inscription dimanche 10 septembre 2006 Statut Membre Dernière intervention 1 mars 2009
26 sept. 2006 à 19:45
bonsoir


 


comme promis j'ai testé le programme Pour la 1 ère feuille le seul soucis est que si la 1ère valeur de textbox 1 ce place sur la ligne A la seconde saisie écrase la première au lieu de se mettre à la suite
pour la seconde même pb sauf que ça bloque àla deuxième ligne et réécris dessus chaque saisie
Pour la troisième feuille il refuse d'écrire dessus - ne reconnait pas les lettres. il me mets erreur : DerniereLigne = Sheets("Feuil3").Cells.Find("*", Sheets("Feuil3").Range("A1"), , , xlByRows, xlPrevious).Row + 1
J'ai essayé de m'y penché mais mon manque d'expérience c'est très vite fais ressentir.("*" ??)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
26 sept. 2006 à 23:45
C'est probablement parce que les feuilles sont vierges.

Essaie comme ceci. Ce n'est pas la meilleure méthode par contre...Je n'aime pas beaucoup le Resume Next.


Tu pourrais aussi vérifier si A1 est vide. Si oui DerniereLigne =1, sinon = formule donnée


Private Sub CommandButton1_Click()

    Dim DerniereLigne As Long

   

    On Error GoTo Erreur

   

 If IsNumeric(TextBox1) Then

    DerniereLigne = Sheets("Feuil1").Cells.Find("*",
Sheets("Feuil1").Range("A1"), , , xlByRows, xlPrevious).Row + 1

    Sheets("Feuil1").Range("A" & DerniereLigne) = TextBox1

    Sheets("Feuil1").Range("B" & DerniereLigne) = TextBox2

    Sheets("Feuil1").Range("C" & DerniereLigne) = TextBox3

    Sheets("Feuil1").Range("D" & DerniereLigne) = TextBox4

    DerniereLigne = Sheets("Feuil2").Cells.Find("*",
Sheets("Feuil2").Range("A1"), , , xlByRows, xlPrevious).Row + 1

    Sheets("Feuil2").Range("A" & DerniereLigne) = TextBox1

    Sheets("Feuil2").Range("B" & DerniereLigne) = TextBox2

    Sheets("Feuil2").Range("C" & DerniereLigne) = TextBox3

    Sheets("Feuil2").Range("D" & DerniereLigne) = TextBox4

Else

    DerniereLigne = Sheets("Feuil2").Cells.Find("*",
Sheets("Feuil2").Range("A1"), , , xlByRows, xlPrevious).Row + 1

    Sheets("Feuil2").Range("A" & DerniereLigne) = TextBox1

    Sheets("Feuil2").Range("B" & DerniereLigne) = TextBox2

    Sheets("Feuil2").Range("C" & DerniereLigne) = TextBox3

    Sheets("Feuil2").Range("D" & DerniereLigne) = TextBox4

    DerniereLigne = Sheets("Feuil3").Cells.Find("*",
Sheets("Feuil3").Range("A1"), , , xlByRows, xlPrevious).Row + 1

    Sheets("Feuil3").Range("A" & DerniereLigne) = TextBox1

    Sheets("Feuil3").Range("B" & DerniereLigne) = TextBox2

    Sheets("Feuil3").Range("C" & DerniereLigne) = TextBox3

    Sheets("Feuil3").Range("D" & DerniereLigne) = TextBox4

End If


Exit Sub

Erreur:

    DerniereLigne = 1

    Resume Next

End Sub

MPi
0
bipbip059 Messages postés 16 Date d'inscription dimanche 10 septembre 2006 Statut Membre Dernière intervention 1 mars 2009
27 sept. 2006 à 07:53
bonjour


c'est ok pour le transfert sur les feuille 3 par contre pour les feuilles 1 et 2 j'ai le même pb, il transfert toujours sur la 1ère ligne d'excel  pour la feuille 1 et pour la feuille 2,  il bloque sur la ligne 2.(1ère saisie=ligne 1, 2e saisie=ligne 2, 3e saisie= ligne 2 etc.)


Bipbip


 
0
bipbip059 Messages postés 16 Date d'inscription dimanche 10 septembre 2006 Statut Membre Dernière intervention 1 mars 2009
28 sept. 2006 à 18:58
bonsoir


Je crois que là on est tombé sur un os j'ai employé les deux solutions de Carvals et à chaque fois je bloque sur la 2éme ligne de chaques feuilles (réécris sans cesse dessus)??????????

Bipbip059
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
28 sept. 2006 à 23:16
C'est peut-être de la façon dont tu as écrit ta procédure et comment /où tu as déclaré tes variables (?)


La méthode que j'utilise pour trouver la dernière ligne ou la première
vide (+1) fonctionne toujours bien dans mes programmes parce que je
n'ai jamais de pages vierges. Il y a toujours au moins les entêtes. Si
je sais qu'il n'y en aura pas, je les écris auparavant dans le code si
nécessaire.


Les 2 autres façons qui t'ont été conseillées par Carvals fonctionnent
aussi. Et tu pourrais en recevoir plusieurs autres qui
fonctionneraient... Donc, je ne pense pas que ce soit là le problème.


Si tu postais ta procédure, peut-être que ce serait plus facile de trouver la solution et/ou l'erreur.

MPi
0
bipbip059 Messages postés 16 Date d'inscription dimanche 10 septembre 2006 Statut Membre Dernière intervention 1 mars 2009
29 sept. 2006 à 18:52
J'avoue que je ne comprends pas.Après une énième tentative j'ai copié collé le programme sur une nouvelle page et là tout a fonctionné. Encore merci à MPi et carvals pour une aide plus que précieuse.


 


 
0
bipbip059 Messages postés 16 Date d'inscription dimanche 10 septembre 2006 Statut Membre Dernière intervention 1 mars 2009
29 sept. 2006 à 20:40
bonsoir

La feuille 2 du classeur excel est un planning de la semaine lundi  colonne G11 à G30
Mardi H11-H30, mercredi I11-I30, jeudi J11-J30, vendredi K11-K30, samedi L11-L30.
Comment peut on si prendre pour que les données de textbox4 se placent automatiquement dans les bonnes colonnes suivant le jours de la saisie et en tenant compte du numéro de la semaine ?

Encore merci

PS : Si quelqu'un pouvait me conseiller sur l'achat d'un très bon livre sur VB 6. Sympa
0
cs_carvals Messages postés 50 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 23 janvier 2008
30 sept. 2006 à 13:00
salut,


la comme ca c'est un peut vague mais voici des choses qui pourront t'aider.


quand tu utilises la fonction recherche le dernier parametre peut etre utile je veux dire que:


.row te renvoie le numero de la ligne de la cellule trouvee ex: 5


.address te renvoie colonne et ligne ex: B5
.activate  active la cellule

la propriete offset te premet de faire un decalage
par exemple tu fais un recherche pour trouver la 40eme semaine en mettant le debut de ta recherche sur "H11" logiquement le resultat de ta recherche sera le mardi de ta 40eme semaine ensuite tu active cette cellule avec le .activate (dernier parametre de la fonction recherche) puis tu decales suivant le jour de la semaine avec offset
activecell.offset(1, 0) placera ton curseur sur mercredi 40 semaine (offset, row, column)
tout depend de comment tu fait ta recherche et ou sont stocke tes parametres de recherche mais regarde sur des sites ou l'aide excel. avec la fonction recherche,  la fonction decaler (offset) et les parametres .row, .address, . activate tu devrais t'en sortir.

sinon envoi moi carrement ton classeur que j'y jette un coup d'oeil.

a+ et bon courage


carvals

PS: MPi> desole d'avoir corrige ton code ds un post precedent je pensais qu'il y avait une erreur d'etourerie. milles excuses
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
30 sept. 2006 à 13:36
Pas de quoi Carvals,

Il m'arrive à l'occasion d'écrire des bouts de codes sans vérifier, simplement de mémoire.

Il y a donc de fortes chances que j'écrive des inexactitudes dans ces cas-là...

N'hésite surtout pas à me corriger s'il y a lieu.

MPi
0
Rejoignez-nous