arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006
-
26 sept. 2006 à 20:24
arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006
-
30 sept. 2006 à 20:15
Bonjour,
Je voudrais que les infos sélectionnés dans ces listes modifiables de mon Userform mettent à jour mon tableau excel, sachant que sur l'userform j'ai créé un bouton validation... On m'a parlé de TextBox.Text et Range ou Cells...Mais j'aurai besoin de plus de précision sur la manip a effectué svp.
J'ai aussi un champ (textbox) pour la date et un texbox pour saisir le nombre d'heures passé sur le chantier.
Mon userform et maintenant tout beau... Si sa peut vous aider à comprendre ce que je veux faire je peux vous envoyer une capture d'écran par mail.
A voir également:
Intégrer les données d'un userfor dans un fichier excel?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 30 sept. 2006 à 18:13
Selon la méthode que tu utilises:
Si tu choisis la boucle, ce sera plus précis et normalement sans erreur, quoiqu'un peu plus lent pour les gros fichiers.
La boucle recherchera la première cellule vide, peu importe s'il y en a d'autres non vides plus bas.
Si tu choisis la formule
Ligne = Sheets("saisi feuille de temps").Columns("A:A").Find("*", Sheets("saisi feuille de temps").Range("A1"), , , xlByRows, xlPrevious).Row + 1
Il faut que tu effaces au préalable les données que tu as déjà entrées en bas, sinon, c'est là que seront copiées les suivantes.
Et une seule formule est nécessaire.
Ne pas oublier que la formule recherche la première ligne vide en bas de toutes les données inscrites de cette colonne.
arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006 27 sept. 2006 à 18:50
Voici un peu plus de précisons:
Quand on a rempli mes diverses listes déroulantes(ComboBox1,2,et 3) et mes TextBox(1 et 2); il faut que quand j'appuie sur le bouton Validation(CommandButton3), que les infos saisie se positionnent dans les cases suivantes de ma feuille excel nommée "saisi feuille de temps":
-ComboBox1= dans la colonne A à partir de la ligne 9.
-TextBox2=dans la colonne C à partir de la ligne 9.
-ComboBox2=dans la colonne D à partir de la ligne 9
-ComboBox3=dans la colonne F à partir de la ligne 9
-TextBox1=dans la colonne H à partir de la ligne 9
Voilà... et tous celà sans que sa me supprime les anciennes saisies, cad qu'il faut que si la ligne 9 n'est pas vide qu'il aille sur la ligne suivantes et ansi de suite.
Cependant, la où est la difficultée(je pense...) c'est que mes Combox (liste déroulante) contiennent 2 colonnes(cf aide de Dolphin et Mpi);or dans mon fichier excel, par exemple, pour le ComboBox1, il faut uniquement les données de la première colonne de ma liste déroulante qui ailles dans ma colonne A ligne 9.....
Je sais pas si je me suis fais bien comprendre là...mais bon c'est pas grave si personne ne trouve comment résoudre ce problème je réduirai mes listes à une colonne.
arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006 27 sept. 2006 à 22:19
Je pense que dans un premier temps il faut que j'utilise ce que Mpi m'a indiué, cad:Sheets("NomDeFeuille").Range("A" & Ligne) = textbox1
Mais comment faire pour que sa commence a etre inséré à partir de la ligne 9? Dois faire comme ceci:Sheets("NomDeFeuille").Range("A9" & Ligne) = textbox1?
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 28 sept. 2006 à 00:54
Pour un Combobox à plusieurs colonnes, il faut spécifier d'une part la
ligne sélectionnée (ici ComboboxX.ListIndex) et pour la colonne il faut
spécifier son Index (ici 0 pour la première colonne)
Private Sub CommandButton1_Click()
Dim Ligne As Long
On Error GoTo Erreur ' au cas où la page serait vierge
arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006 28 sept. 2006 à 18:31
Voilà j'ai mis le code de MPi en y insérant le nom de ma feuille excel comme ci-dessous:
rivate Sub CommandButton3_Click()
Dim Ligne As Long
On Error GoTo Erreur
Ligne = Sheets("saisi feuille de temps").Cells.Find _
("*", Sheets("saisi feuille de temps").Range("A1"), , , xlByRows, xlPrevious).Row + 1
If Ligne < 9 Then Ligne = 9
Err.Clear
Exit Sub
Erreur:
If Err.Number = 91 Then
Ligne = 1
Resume Next
Else
MsgBox Err.Description
End If
End Sub
Cependant il semble qu'il y est un problème avec ma liste déroulante qui contient le code salarié...quand je lance l'userform et que je sélectionne le code voilà ce qui s'affiche:"Erreur d'execution 380.Impossible de définir la propriété RowSource.Valeur de propriété non valide."
arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006 29 sept. 2006 à 18:35
Voilà ce que j'ai fais:
Private Sub UserForm1_Initialize()
ComboBox1.RowSource = ("Base de donnée!D4:E66")
End Sub
Je n'ai plus de message d'erreur quand je selectionne les infos mais quand je clique sur le bouton validation les données ne sont pas transférées...Par contre excel ce positionne sur la ligne 9....
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 29 sept. 2006 à 23:33
Ça devrait être écrit comme ça (avec les apostrophes)
ComboBox1.RowSource = "'Base de donnée'!D4:E66"
Mettre en commentaire veut dire de mettre une apostrophe en début de
ligne de code pour qu'elle ne soit pas lue par le programme/compilateur
comme si c'était un simple commentaire
Si tu cliques sur le bouton Valider et que rien ne s'écrit dans la
feuille, il faut t'assurer que tu avais bien écrit quelque chose dans
les textbox ou sélectionné un item du Combobox autrement je ne vois
pas... pour l'instant...
arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006 29 sept. 2006 à 23:48
Voilà en commentaire sa donne donsc celà:
Private Sub UserForm1_Initialize()
ComboBox1.RowSource = ("'Base de donnée'!D4:E66")
End Sub
J'ai bien des données selectionnées dans mes texBox (le chiffre 7 par exemple), et g selectionné sur chacune de mes listes modifiables...mais rien ne se passe après avoir cliquer sur mon bouton validation...
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 30 sept. 2006 à 15:54
Salut,
Comme j'ai pu voir ton fichier, il m'a été plus facile de trouver le problème....
Les différentes méthodes pour trouver la dernière ligne écrite ou la
première ligne vide sont utiles dans les cas où il n'y a pas de
formules ou autre sur les lignes qu'on veut remplir. Pour être plus
clair, regarde les lignes 107 et suivantes. C'est là que tes données de
test ont été inscrites parce qu'il y a des formules dans certaines
colonnes (B, E, G)
Private Sub CommandButton3_Click()
Dim I As Long, Ligne As Long
On Error GoTo Erreur
'On peut soit boucler
For I = 9 To 60000 'on peut bien sûr modifier le 60000...
If Range("A" & I) = ""
Then ' considérant que A sera toujours rempli à la validation
Ligne = I
Exit For
End If
Next
'ou forcer la recherche de ligne vide dans une colonne particulière, vraiment vide...
'Changer les 3 A si on veut rechercher une autre colonne
'Ligne = Sheets("saisi feuille de temps").Columns("A:A").Find("*", Sheets("saisi feuille de temps").Range("A1"), , , xlByRows, xlPrevious).Row + 1
arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006 30 sept. 2006 à 17:14
Merci j'aurai jamais pensez à aller voir en bas!
j'ai mis ton nouveau code mais sa ne change rien les données vont toujours en bas.... D'après ce que tu me dis je ne peut pasavoir recours a des formules( de simples rechercheV...)?
arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006 30 sept. 2006 à 17:22
En plus les colonnes où il y a des formules , ce ne sont pas elles qui sont intégrer depuis mon userform... Ou alors si g bien compris ce que tu m'explique,il faut que je reprenne cet partie de ton code pour chacunes des colonnes que je veux renseigner? C'est à dire:
Ligne = Sheets("saisi feuille de temps").Columns("A:A").Find("*", Sheets("saisi feuille de temps").Range("A1"), , , xlByRows, xlPrevious).Row + 1
'Ligne = Sheets("saisi feuille de temps").Columns("c:c").Find("*", Sheets("saisi feuille de temps").Range("c1"), , , xlByRows, xlPrevious).Row + 1
'Ligne = Sheets("saisi feuille de temps").Columns("d:d").Find("*", Sheets("saisi feuille de temps").Range("d1"), , , xlByRows, xlPrevious).Row + 1
'Ligne = Sheets("saisi feuille de temps").Columns("f:f").Find("*", Sheets("saisi feuille de temps").Range("f1"), , , xlByRows, xlPrevious).Row + 1
etc...
Mais là je croisque je dis une bétise vu que j'ai aussi deux texbox à renseigner...