Enregistrement de données
Résolu/Fermé
BBdolph
-
11 juin 2008 à 16:26
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 - 12 juin 2008 à 14:14
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 - 12 juin 2008 à 14:14
A voir également:
- Enregistrement de données
- Effacer les données de navigation - Guide
- Reinstaller windows sans perte de données - Guide
- Enregistrement vidéo écran - Guide
- Comment sauvegarder toutes les données de mon téléphone - Guide
- Youtube enregistrement vidéo - Guide
6 réponses
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
11 juin 2008 à 18:23
11 juin 2008 à 18:23
Bonjour,
quand ton formulaire s'ouvre, tu peux provoquer sa mise à jour grâce à l'évènement Activate (clique droit sur ton userform, puis Code)
ainsi, tu peux mettre à jour le contenu de ses contrôles.
pour faire référence à la ligne active de ton fichier Excel, utilise ActiveSheet.ActiveCell
Pour exemple :
A suivre...
quand ton formulaire s'ouvre, tu peux provoquer sa mise à jour grâce à l'évènement Activate (clique droit sur ton userform, puis Code)
ainsi, tu peux mettre à jour le contenu de ses contrôles.
pour faire référence à la ligne active de ton fichier Excel, utilise ActiveSheet.ActiveCell
Pour exemple :
Private Sub UserForm_Activate() Me.Label1 = "Hello" Me.TextBox1 = ActiveSheet.ActiveCell.Value Me.TextBox2 = ActiveSheet.ActiveCell.Offset(0,1).Value End Sub
A suivre...
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
12 juin 2008 à 09:53
12 juin 2008 à 09:53
Bonjour BBdolph,
j'avais bien compris ta problématique.
Peux-tu me dire ce que tu as mis dans ta procédure Private Sub UserForm_Activate() ?
A quel ligne de code est-ce que ça génère un message d'erreur 438 ?
Si tu le souhaites (et s'il n'y a rien de confidentiel), tu peux joindre ton fichier dans www.cijoint.fr
A suivre...
un autre exemple :
j'avais bien compris ta problématique.
Peux-tu me dire ce que tu as mis dans ta procédure Private Sub UserForm_Activate() ?
A quel ligne de code est-ce que ça génère un message d'erreur 438 ?
Si tu le souhaites (et s'il n'y a rien de confidentiel), tu peux joindre ton fichier dans www.cijoint.fr
A suivre...
un autre exemple :
Private Sub UserForm_Activate() TextBox1 = cells(ActiveCell.Row, 1).Value ' affiche la valeur en A TextBox2 = cells(ActiveCell.Row, 2).Value ' affiche la valeur en B End Sub
Rebonjour Ivan-hoe,
Je viens d'essayer le deuxième exemple et ça marche. C'est grandiose!!!!!!!!!!!
Je te remercie infiniment pour tes conseils.
Pour info, la première fois, j'avais mis :
Private Sub UserForm_Activate()
Me.txte_affaire = ActiveSheet.ActiveCell.Offset(0, 1).Value
End Sub
Mais maintenant, tout fonctionne très bien grâce à toi.
Encore mille merci pour ton aide.
BBdolph
Je viens d'essayer le deuxième exemple et ça marche. C'est grandiose!!!!!!!!!!!
Je te remercie infiniment pour tes conseils.
Pour info, la première fois, j'avais mis :
Private Sub UserForm_Activate()
Me.txte_affaire = ActiveSheet.ActiveCell.Offset(0, 1).Value
End Sub
Mais maintenant, tout fonctionne très bien grâce à toi.
Encore mille merci pour ton aide.
BBdolph
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
12 juin 2008 à 10:09
12 juin 2008 à 10:09
Bon, c'est cool !
En fait, c'est le Activesheet dans le premier exemple qui posait problème.
Bonne continuation.
I.
En fait, c'est le Activesheet dans le premier exemple qui posait problème.
Bonne continuation.
I.
Je me permet de revenir vers toi, car je suis face à un autre problème et tu as l'air très calé.
Donc mon userform s'ouvre (avec les éléments de la ligne) et je demande à compléter les informations qui vont s'enregistrer sur la même ligne. Jusque là, nickele!! Lorsque tu séléctionne un champ précis, tu ouvres un nouveau classeur excel et tu enregistres les informations dans les 2 classeurs.
Le problème est que sur le deuxième classeur, il enregistre toutes les informations sur la même ligne.
En tant normal, je sais faire pour que vba enregistre les informations à la ligne suivante mais là je pense que ça fait doublon avec l'enregistrement sur la feuille de base.
Je veux bien te faire parvenir le fichier mais aurais-tu un autre site car mon fichier n'est pas confidentiel mais c'est dans le cadre de mon travail et plus c'est discret mieux c'est!!!!!!
Merci de ta réponse
BBdolph
Donc mon userform s'ouvre (avec les éléments de la ligne) et je demande à compléter les informations qui vont s'enregistrer sur la même ligne. Jusque là, nickele!! Lorsque tu séléctionne un champ précis, tu ouvres un nouveau classeur excel et tu enregistres les informations dans les 2 classeurs.
Le problème est que sur le deuxième classeur, il enregistre toutes les informations sur la même ligne.
En tant normal, je sais faire pour que vba enregistre les informations à la ligne suivante mais là je pense que ça fait doublon avec l'enregistrement sur la feuille de base.
Je veux bien te faire parvenir le fichier mais aurais-tu un autre site car mon fichier n'est pas confidentiel mais c'est dans le cadre de mon travail et plus c'est discret mieux c'est!!!!!!
Merci de ta réponse
BBdolph
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
12 juin 2008 à 11:11
12 juin 2008 à 11:11
Déjà, peut-on jeter un oeil au code qui enregistre les éléments dans 2 fichiers différents ?
Merci.
Merci.
Je viens de trouver une réponse, dans le classeur "PlanningLivraison", il y avait une ligne vide (pour la mise en page) et lorsque je supprime cette ligne, le code fonctionne très bien.
Ceci dit, ça n'explique pas pourquoi l'autre code marchait pas car je lui demandais de commencer la séléction à la ligne 4 (après la mise en page).
Voici pour ce problème, je te remercie beaucoup de m'avoir aidé ainsi. C'est formidable!!!!!!
J'ai une dernière petite question, si à l'avenir, je cale encore, puis-je faire appel à tes connaissances?????
Encore merci,
BBdolph
Ceci dit, ça n'explique pas pourquoi l'autre code marchait pas car je lui demandais de commencer la séléction à la ligne 4 (après la mise en page).
Voici pour ce problème, je te remercie beaucoup de m'avoir aidé ainsi. C'est formidable!!!!!!
J'ai une dernière petite question, si à l'avenir, je cale encore, puis-je faire appel à tes connaissances?????
Encore merci,
BBdolph
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Voici les codes :
Private Sub cbo_enr_Click()
Dim lignevide As Integer
Dim ligne As Integer
ligne = ActiveCell.Row
If MsgBox("Confirmez-vous l'enregistrement ? ", vbQuestion + vbYesNo, strAppName) = vbYes Then
Range("J" & ligne).Value = cbo_etat.Value
Range("K" & ligne).Value = cbo_montant.Value
Range("K:K").Select
Selection.NumberFormat = "#,##0.00 $"
Range("L" & ligne).Value = cbo_sem.Value
Range("M" & ligne).Value = txt_type.Value
Range("N" & ligne).Value = txt_temps.Value
Range("O" & ligne).Value = txt_add.Value
End If
ActiveWorkbook.Save
Me.Hide
If cbo_etat.Value = "Commande" Then
chemin = ActiveWorkbook.Path
Workbooks.Open chemin & "\PlanningLivraison.xls"
Sheets(cbo_sem.Value).Select
lignevide = 4
If Range("A5").Value <> "" Then
Range("A4").Select
Selection.End(xlDown).Select
lignevide = ActiveCell.Row + 1
End If
Range("A" & lignevide).Value = txte_affaire
Range("B" & lignevide).Value = txte_depot
Range("C" & lignevide).Value = txte_client
Range("D" & lignevide).Value = txte_chantier
Range("E" & lignevide).Value = txt_type
Range("F" & lignevide).Value = txt_add
ActiveWorkbook.Save
End If
Voilà. Il m'enregistre bien les informations lors de l'ouverture du deuxième classeur (NB: mon classeur comporte 52 feuilles=52 semaines et cbo_sem ouvre automatiquement la feuille, ex: semaine 20 ouvre la feuille 20) mais enregistre sur la même ligne lorsqu'on choisit plusieurs fois une semaine!!!!!
Private Sub cbo_enr_Click()
Dim lignevide As Integer
Dim ligne As Integer
ligne = ActiveCell.Row
If MsgBox("Confirmez-vous l'enregistrement ? ", vbQuestion + vbYesNo, strAppName) = vbYes Then
Range("J" & ligne).Value = cbo_etat.Value
Range("K" & ligne).Value = cbo_montant.Value
Range("K:K").Select
Selection.NumberFormat = "#,##0.00 $"
Range("L" & ligne).Value = cbo_sem.Value
Range("M" & ligne).Value = txt_type.Value
Range("N" & ligne).Value = txt_temps.Value
Range("O" & ligne).Value = txt_add.Value
End If
ActiveWorkbook.Save
Me.Hide
If cbo_etat.Value = "Commande" Then
chemin = ActiveWorkbook.Path
Workbooks.Open chemin & "\PlanningLivraison.xls"
Sheets(cbo_sem.Value).Select
lignevide = 4
If Range("A5").Value <> "" Then
Range("A4").Select
Selection.End(xlDown).Select
lignevide = ActiveCell.Row + 1
End If
Range("A" & lignevide).Value = txte_affaire
Range("B" & lignevide).Value = txte_depot
Range("C" & lignevide).Value = txte_client
Range("D" & lignevide).Value = txte_chantier
Range("E" & lignevide).Value = txt_type
Range("F" & lignevide).Value = txt_add
ActiveWorkbook.Save
End If
Voilà. Il m'enregistre bien les informations lors de l'ouverture du deuxième classeur (NB: mon classeur comporte 52 feuilles=52 semaines et cbo_sem ouvre automatiquement la feuille, ex: semaine 20 ouvre la feuille 20) mais enregistre sur la même ligne lorsqu'on choisit plusieurs fois une semaine!!!!!
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
12 juin 2008 à 14:14
12 juin 2008 à 14:14
L'ordinateur ne se trompe jamais.
Le problème vient de là :
SI A5 est vide, alors lignevide conserve la valeur 4 , donc tu écris tes valeurs en A4 et A5 reste éternellement vide.
Il faudrait modifier en
Pour tes questions à venir, pas de souci, poste un message sur CCM : si ce n'est pas moi qui réponds, ce sera un autre et tu ne perdras pas au change.
I.
Le problème vient de là :
lignevide = 4 If Range("A5").Value <> "" Then Range("A4").Select Selection.End(xlDown).Select lignevide = ActiveCell.Row + 1 End If
SI A5 est vide, alors lignevide conserve la valeur 4 , donc tu écris tes valeurs en A4 et A5 reste éternellement vide.
Il faudrait modifier en
If Range("A4").Value <> "" Then
Pour tes questions à venir, pas de souci, poste un message sur CCM : si ce n'est pas moi qui réponds, ce sera un autre et tu ne perdras pas au change.
I.
12 juin 2008 à 08:47
Merci beaucoup pour ta réponse mais ça ne marche pas.
Il me met un code d'erreur "code 438".
Je vais essayer de détailler mon problème. J'ai donc ma base excel avec des colonnes qui vont de A à O. La colonne I est la colonne "OUI / NON" (formule VBA). Donc quand je dis "OUI", un userform s'ouvre. Je souhaiterai lorsque le userform s'ouvre qu'il affiche dans le textbox1 les données se trouvant dans la colonne A ligne sélectionnée. Et ainsi de suite pour les autres textboxs.
J'espère avoir été assez précise dans l'exposé de mon problème!!!
Merci de me venir en aide.