Codes vba pour un bouton de commande
Résolu
Guerschomaly
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Guerschomaly Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Guerschomaly Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour
Je suis un débutant en programmation et un nouveau au forum, d'ou je demande d'avance votre indulgence pour toute éventuelle irrégularité.
j'ai créé un petit formulaire qui a deux textbox et un bouton de commande, les deux textbox me permettent de saisir la date du jour et l'évenement du jour et le bouton de commande devrait me permettre de les (la date et l'évenement) ajouter quotidiennement dans deux colonnes (Date: A et Evenement: G) d'un tableur excel (dont les cellules de autres colonnes qui contiennent les formules se remplissent automatiquement à partir des données d'une autre feuil) en commençant par leurs premières cellules vides A5 pour la date et G5 pour l'évenement, ces cellules ont été fusionnées et celles de la colonne date ont été renommées; Elles sont au total 35 cellules par colonne, celles de la colonne date renommées de RDAT1 à RDAT35. Après chaque 7 cellules pour les deux colonnes il y a une cellule déjà remplie pour le sous-total hebdomadaire.
Voici ci-après le code vba que j'ai écrit derrière le bouton de commande mais qui ne marche pas. J'ai besoin de votre aide
Private Sub CommandButton_Enregister_Click()
Feuil16.Activate
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("RAPPORT")
'Trouve la premiere ligne vide
iRow = ws.Cells(Rows.Count, 1)
.End(xlUp).Offset(1, 0).Row
'Si le formulaire est complet, on insère les valeurs sur la feuille
ws.Cells(iRow, 1) = TextBox_Date_jour.Value
ws.Cells(iRow, 7) = TextBox_Evenement.Value
'Après insertion, on remet les valeurs initiales
Me.TextBox_Date_jour = ""
Me.TextBox_Evenement = ""
ThisWorkbook.Save
Unload Me
End Sub
Je suis un débutant en programmation et un nouveau au forum, d'ou je demande d'avance votre indulgence pour toute éventuelle irrégularité.
j'ai créé un petit formulaire qui a deux textbox et un bouton de commande, les deux textbox me permettent de saisir la date du jour et l'évenement du jour et le bouton de commande devrait me permettre de les (la date et l'évenement) ajouter quotidiennement dans deux colonnes (Date: A et Evenement: G) d'un tableur excel (dont les cellules de autres colonnes qui contiennent les formules se remplissent automatiquement à partir des données d'une autre feuil) en commençant par leurs premières cellules vides A5 pour la date et G5 pour l'évenement, ces cellules ont été fusionnées et celles de la colonne date ont été renommées; Elles sont au total 35 cellules par colonne, celles de la colonne date renommées de RDAT1 à RDAT35. Après chaque 7 cellules pour les deux colonnes il y a une cellule déjà remplie pour le sous-total hebdomadaire.
Voici ci-après le code vba que j'ai écrit derrière le bouton de commande mais qui ne marche pas. J'ai besoin de votre aide
Private Sub CommandButton_Enregister_Click()
Feuil16.Activate
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("RAPPORT")
'Trouve la premiere ligne vide
iRow = ws.Cells(Rows.Count, 1)
.End(xlUp).Offset(1, 0).Row
'Si le formulaire est complet, on insère les valeurs sur la feuille
ws.Cells(iRow, 1) = TextBox_Date_jour.Value
ws.Cells(iRow, 7) = TextBox_Evenement.Value
'Après insertion, on remet les valeurs initiales
Me.TextBox_Date_jour = ""
Me.TextBox_Evenement = ""
ThisWorkbook.Save
Unload Me
End Sub
A voir également:
- Bouton vba
- Bouton reinitialisation pc - Guide
- Diagnostic bouton photo - Accueil - Outils
- Bouton on/off comment savoir ✓ - Forum Matériel & Système
- Symbole arrêt marche - Forum Word
- Réinitialiser chromecast sans bouton - Guide
3 réponses
Bonjour,
Ton code devrait fonctionner, Feuil16.Activate est inutile (si tu dois sélectionner la feuille, il vaut mieux ws.Activate près le Set) et iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row doit être sur une ligne :
Ton code devrait fonctionner, Feuil16.Activate est inutile (si tu dois sélectionner la feuille, il vaut mieux ws.Activate près le Set) et iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row doit être sur une ligne :
Private Sub CommandButton_Enregister_Click() Dim iRow As Long Dim ws As Worksheet Set ws = Worksheets("RAPPORT") 'Trouve la premiere ligne vide iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 'Si le formulaire est complet, on insère les valeurs sur la feuille ws.Cells(iRow, 1) = TextBox_Date_jour.Value ws.Cells(iRow, 7) = TextBox_Evenement.Value 'Après insertion, on remet les valeurs initiales Me.TextBox_Date_jour = "" Me.TextBox_Evenement = "" 'ThisWorkbook.Save Unload Me End Sub
Bonjour,
C'est pas plus clair qu'avant !!!
« le tableau a sept colonnes (de A à G) et 154 lignes, donc il occupe la plage de A1 à G154» Jusque-là ça va !
Là ou c'est moins clair c'est :
« c'est seulement cette plage qui m'interresse pas toute le feuille RAPPORT. » ???
Je suppose que tu a voulu écrire :
« c'est seulement cette plage qui m'intéresse, pas toute le feuille RAPPORT. » avec une virgule !
Et encore :
« Le code actuel ajoute les dates et les évenements sur la feuille mais pas dans le tableau, càd à partir de A155 et G155 »
La aussi je suppose que c'est :
« Le code actuel ajoute les dates et les évènements sur la feuille à partir de A155 et G155, mais pas dans le tableau »
Alors dans ce cas, c'est que la plage de cellules A5:A154 n'est pas vide !!!
Peut-être y-t-il des formules ou des espaces ???
Cordialement
Patrice
C'est pas plus clair qu'avant !!!
« le tableau a sept colonnes (de A à G) et 154 lignes, donc il occupe la plage de A1 à G154» Jusque-là ça va !
Là ou c'est moins clair c'est :
« c'est seulement cette plage qui m'interresse pas toute le feuille RAPPORT. » ???
Je suppose que tu a voulu écrire :
« c'est seulement cette plage qui m'intéresse, pas toute le feuille RAPPORT. » avec une virgule !
Et encore :
« Le code actuel ajoute les dates et les évenements sur la feuille mais pas dans le tableau, càd à partir de A155 et G155 »
La aussi je suppose que c'est :
« Le code actuel ajoute les dates et les évènements sur la feuille à partir de A155 et G155, mais pas dans le tableau »
Alors dans ce cas, c'est que la plage de cellules A5:A154 n'est pas vide !!!
Peut-être y-t-il des formules ou des espaces ???
Cordialement
Patrice
Bonjour,
Ne ne comprend plus :
- d'un coté a propos de ma réponse «la plage de cellules A5:A154 n'est pas vide » tu dis que « Dans cette plage il y a effectivement des cellules qui ont des formules et des espaces » . Ce qui explique parfaitement le fait que « Le code actuel ajoute les dates et les évènements sur la feuille à partir de A155 et G155, mais pas dans le tableau ».
- et maintenant tu réponds « les cellules de deux colonnes ou il faut enregistrer les données sont vides, pour la colonne Date, la première cellule vide c'est A5 ... »
Il faudrait savoir : soit elles sont vides et il n'y a rien dedans, ni formule ni espace, soit elles ne sont pas vides !!!
Dans le cas où les cellules sont vides, il n'y a aucune raison pour que la macro proposée, ne fonctionne pas.
Et dans le cas où elles ne sont pas vides, il est normal que la macro écrive sur la première cellule non vide (en A155) !
Ne ne comprend plus :
- d'un coté a propos de ma réponse «la plage de cellules A5:A154 n'est pas vide » tu dis que « Dans cette plage il y a effectivement des cellules qui ont des formules et des espaces » . Ce qui explique parfaitement le fait que « Le code actuel ajoute les dates et les évènements sur la feuille à partir de A155 et G155, mais pas dans le tableau ».
- et maintenant tu réponds « les cellules de deux colonnes ou il faut enregistrer les données sont vides, pour la colonne Date, la première cellule vide c'est A5 ... »
Il faudrait savoir : soit elles sont vides et il n'y a rien dedans, ni formule ni espace, soit elles ne sont pas vides !!!
Dans le cas où les cellules sont vides, il n'y a aucune raison pour que la macro proposée, ne fonctionne pas.
Et dans le cas où elles ne sont pas vides, il est normal que la macro écrive sur la première cellule non vide (en A155) !
Bonjour
J'ai trouvé une solution, il était seulement question de définir la plage ou inserer les données, ci-dessous, le code vba que j'ai écrit, il marche sans problème.
Merci pour ton aide et pour ton temps
Cordiallement
Guerschom
J'ai trouvé une solution, il était seulement question de définir la plage ou inserer les données, ci-dessous, le code vba que j'ai écrit, il marche sans problème.
Private Sub CommandButton_Enregister_Click() Feuil16.Activate Dim iRow As Long Dim wsr As Range Range("tableau_RAPPORT").End(xlUp).Offset(1, 0).Select iRow = Range("tableau_RAPPORT").End(xlUp).Row + 1 'Si le formulaire est complet on enregistre les données dans le tableau dans les cellules vides While (Cells(iRow, 1).Value <> "") iRow = iRow + 1 Wend Cells(iRow, 1).Select Cells(iRow, 1) = TextBox_Date_jour.Value Cells(iRow, 7) = TextBox_Evenement.Value 'Après insertion, on remet les valeurs initiales Me.TextBox_Date_jour = "" Me.TextBox_Evenement = "" ThisWorkbook.Save Unload Me End Sub
Merci pour ton aide et pour ton temps
Cordiallement
Guerschom
Le code marche mais il se pose encore un problème, quand je valide en cliquant sur le bouton, les données sont bel et bien ajoutées sur la feuille mais pas dans le tableau alors que c'est seulement dans le tableau que je suis sensé enregistrer les données mais pas en dehors, je pense qu'il faut définir la plage dans les codes pour que les données soient seulement ajoutées dans les cellules concernées (les détails sur les cellules dans mon premier poste) tableau mais pas en déhors mais je n'arrive pas à le faire. Ce tableau doit contenir les données du rapport mensuel, qui comme je l'avais signalé dans mon premier poste y sont insérées automatiquement à partir d'une autre feuil.
Je compte encore sur votre assistance
Cordialement
Guerschom
C'est pas clair du tout !!!
Le problème se pause sur la deuxième feuille (RAPPORT), celle-ci contient un tableau pour le rapport mensuel, j'ai utilisé des formules excel pour que les informations de ce tableau s'ajoutent automatiquement en fonction des données enregistrées dans le tableau de la première feuille, sauf pour deux colonnes (Date et Evenement); d'ou, j'ai créé un autre petit formulaire pour me permettre d'inserer seulement la date et l'évenement du jour dans les deux colonnes (Date et Evenement) pour tout le mois.
NB: Le format du tableau du RAPPORT est déjà prédefini, le tableau a sept colonnes (de A à G) et 154 lignes, donc il occupe la plage de A1 à G154, c'est seulement cette plage qui m'interresse pas toute le feuille RAPPORT. Il faudra donc écrire les codes VBA derrière le bouton du formulaire de façon que les dates et evenements du jour soient inserées dans les cellules appropriées de deux colonnes concernées càd de A5 à A145 pour la colonne DATE et G5 à G145 pour la colonne EVENEMENT. Le code actuel ajoute les dates et les évenements sur la feuille mais pas dans le tableau, càd à partir de A155 et G155. Je n sais pas si c'est clair maintenant!
Merci de me faire votre feedback.