eastpeople
Messages postés105Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 novembre 2008
-
29 mai 2008 à 20:59
eastpeople
Messages postés105Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 novembre 2008
-
2 juin 2008 à 10:51
Bonjour tout le monde, alors je vais tenter de vos expliquer mon problème.
J'ai un userform avec une liste deroulante, j'aimerai que quand une valeur est choisie dans la liste (valeur deja dans excel) et que l'utilisateur clik sur ok ça recherche la valeur en l'occurence du texte dans la premiere page d'excel et que ça recopie et la valeur et toute la ligne dans la seconde feuille a un endroit bien precis. Mais je n'est aucune idée de comment m'y prendre!
Est ce que quelqu'un peu m'aider?
Merci
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 30 mai 2008 à 00:30
Tu devrais utiliser Find pour trouver l'occurence de ta valeur.
Quelque chose comme
Dim Recherche As rangeSet Recherche Sheets(" Feuil1 ").<gras>Cells.Find(Listbox1.Text, LookIn:</gras>xlValues, LookAt:=xlWhole)
If Not Recherche Is Nothing then
Msgbox Recherche.row 'ici tu peux faire Rows(recherche.Row).Copy
End If
Regarde les paramètres de la fonction Find dans ton aide pour savoir lesquels tu pourrais avoir besoin.
Tu peux changer Cells par Columns("A") pour rechercher uniquement dans cette colonne ou un Range quelconque... Et tu changes Feuil1 et Listbox1 par les bons noms...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
eastpeople
Messages postés105Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 novembre 2008 30 mai 2008 à 10:02
Bonjour Mpi,
alors j'ai suivi ton code j'ai donc mis dans l'évenement change de ma liste deroulante :
Private Sub type_dact_Change()
Dim Recherche As Range
Set Recherche = Sheets("abonnements").Cells.Find(type_dact.Text, LookIn:=xlValues, LookAt:=xlWhole)
If Not Recherche Is Nothing Then
Rows(Recherche.Row).Copy
End If
End Sub
Alors ça marche parce que ca copi la ligne voulu ( pointillé autour de la ligne) mais ça ne la colle pas. J'aimerai que l'activité donc le texte de la cellule de la colonne A se mette dans la feuille calculs à la case B2 et que le reste de la ligne se mette de B4 à F4.
Est ce que cela est possible?
Et est ce que c'est possible de mette ce sode dans l'évenemen click de OK?Merci de votre aide.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 30 mai 2008 à 12:02
J'utiliserais l'événement Click plutôt que Change.
Dans ton code il n'y a que la partie Copy. Il te faut maintenant utiliser Paste ou PasteSpecial pour coller. Comme tu ne veux pas copier toute la ligne, tu ne peux plus utiliser Rows, mais plutôt un Range. En fait, si tu copies toute une ligne et que tu colles en A, il n'y a pas de problème. Si tu veux la coller en B, là, il y a un problème; il manque une cellule pour le collage...
Private Sub type_dact_Change()
Dim Recherche As Range
Set Recherche = Sheets("abonnements").Cells.Find(type_dact.Text, LookIn:=xlValues, LookAt:=xlWhole)
If Not Recherche Is Nothing Then
Range("A" & Recherche.Row).Copy Sheets("calculs").Range("B2")
Range("B" & Recherche.Row & ":F" & Recherche.Row).Copy Sheets("calculs").Range("B4")
End If
End Sub
Tu pourrais aussi le faire comme ceci
Range("A" & Recherche.Row).Copy
Sheets("calculs").Range("B2").PasteSpecial
Range("B" & Recherche.Row & ":F" & Recherche.Row).Copy
Sheets("calculs").Range("B4").PasteSpecial
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
eastpeople
Messages postés105Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 novembre 2008 30 mai 2008 à 17:32
Merci plus que tout Mpi cela marche, je suis trop contente.
Mais un beug car je rentre donc les info sur le userform UTIL je clik sur ok, les info se mettent bien mais quand je veux le refaire, il y a encore les valeurs dans excel et là ça me met des trucs très bizarre. Ca me recopie des trucs partout. Commen faire pour que quand on click sur OK sur le Userform REPONSE les cases copies se reinitialize?
Merci encore pour ton coup de pouce qui est plus un coup de main d'ailleurs.
Vous n’avez pas trouvé la réponse que vous recherchez ?
eastpeople
Messages postés105Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 novembre 2008 31 mai 2008 à 13:24
Oui pardon, alors en fet mon programme consiste a aider un utilisateur a choisir entre plusieurs forfait suivant le nombre de frequentation par moi.
J'ai un userform pour l'administrateur qui rentre les different forfait et prix qui se marque sur la feuille abonnement.
Et j'ai un userform de l'utilisateur, celui dont je te parle qui contient une liste deroulante ou il va choisir l'activité qu'il desire et une case ou il va rentrer sa frequentation.
Grace a toi, quand il click sur OK l'activité qu'il a choisie est rechercher dans la feuille abonnement et est recopié dans la feuille calculs.
La est le probleme, quand l'utilisateur a la reponse, une question lui est posé pour savoir s'il veut une autre info si oui il retombe sur le userform ou il y a la liste deroulant et la case frequentation mais comme les cases d'excel ont gardé les valeurs d'avant y a un beug dans le copiage de l'activité sur la feuille calculs alor je voulais savoir comment je pouvais faire pour que les cases à variables de la feuille excel se reinitialise quand il click sur OK du userform qui contient sa reponse.
J'espere que tu a compri.
Merci pour ton aide.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 31 mai 2008 à 14:27
Ça semble plus clair...
Ben il n'y a pas de recette miracle. C'est à toi, après avoir copier les données sur la feuille, d'effacer tous les contrôles qui contiennent les entrées de l'utilisateur.
Textbox1 = ""
Textbox2 = ""
S'il y a de nombreux textbox, tu pourrais aussi créer une boucle avec la collection Controls.
For i = 1 to nbTextbox
Me.Controls("Textbox" & i) = ""
Next
Mais peut-être aussi que ça peut dépendre comment tu charges ces textbox (?) si ce sont bien des textbox dont on parle...
Et si je semble avoir mal compris encore une fois, il serait bien que tu mettes le bout de code que tu as dans le bouton OK. Ce sera probablement plus simple de t'aider.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
eastpeople
Messages postés105Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 novembre 2008 2 juin 2008 à 10:51
Oui pardon, alors mon code OK dans le userform est le suivant:
Private Sub OK_Click()
Dim Recherche As Range
Set Recherche = Sheets("abonnements").Cells.Find(type_dact.Text, LookIn:=xlValues, LookAt:=xlWhole)
If Not Recherche Is Nothing Then
Range("A" & Recherche.Row).Copy
Sheets("calculs").Range("B2").PasteSpecial
Range("B" & Recherche.Row & ":F" & Recherche.Row).Copy
Sheets("calculs").Range("B4").PasteSpecial
End If
UTIL.Hide
REPONSE.Show
End Sub
Alors en fait, j'aimerai que quand on click sur OK du userform UTIL, je recupere dans le textbox du userform REPONSE la case B10 de la feuille Calculs. alors j'ai fait:
Private Sub RecupererCalcul()
Sheets("calculs").Activate
conseil = Worksheets("calculs").Range("B10")
End Sub
Mais je ne sais pas où mettre:
call RecupererCalcul
Et aussi j'aimerai que quand on click sur OK du userform REPONSE, les valeurs qui ont été copié dans la feuille Calculs soient effacer donc B1 B2 B4 C4 D4 E4 F4.
Voila mon code de OK du userform REPONSE:
Private Sub OK_Click()
Message = MsgBox("Voulez-vous une autre information?", vbYesNo + vbQuestion, "AUTRE")
If Message = vbNo Then
so = MsgBox("Merci de votre attention, à très bientôt dans notre complexe sportif", , "AUREVOIR")
REPONSE.Hide
Else
If Message = vbYes Then
REPONSE.Hide
UTIL.Show
End If
End If
End Sub