Codes vba pour un bouton de commande
Résolu/Fermé
Guerschomaly
Messages postés
6
Date d'inscription
mardi 6 août 2013
Statut
Membre
Dernière intervention
16 août 2013
-
6 août 2013 à 17:05
Guerschomaly Messages postés 6 Date d'inscription mardi 6 août 2013 Statut Membre Dernière intervention 16 août 2013 - 16 août 2013 à 14:08
Guerschomaly Messages postés 6 Date d'inscription mardi 6 août 2013 Statut Membre Dernière intervention 16 août 2013 - 16 août 2013 à 14:08
A voir également:
- Bouton vba
- Réinitialiser chromecast sans bouton - Guide
- Bouton reinitialisation pc - Guide
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Find vba - Astuces et Solutions
- Hard reset samsung sans bouton home - Guide
3 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
10 août 2013 à 17:05
10 août 2013 à 17:05
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
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié par Patrice33740 le 12/08/2013 à 15:36
Modifié par Patrice33740 le 12/08/2013 à 15:36
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
Guerschomaly
Messages postés
6
Date d'inscription
mardi 6 août 2013
Statut
Membre
Dernière intervention
16 août 2013
12 août 2013 à 15:54
12 août 2013 à 15:54
Oui, vous avez raison, c'est comme ça que je devais écrire.
Dans cette plage il y a effectivement des cellules qui ont des formules et des espaces.
Cordialement
Guerschom
Dans cette plage il y a effectivement des cellules qui ont des formules et des espaces.
Cordialement
Guerschom
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
12 août 2013 à 16:15
12 août 2013 à 16:15
Comment peut-on savoir où il faut écrire ???
Est-ce en fonction du résultat des formules ???
Ou suffit-il au début de l'opération d'effacer la zone ?
Ou .... ???
Est-ce en fonction du résultat des formules ???
Ou suffit-il au début de l'opération d'effacer la zone ?
Ou .... ???
Guerschomaly
Messages postés
6
Date d'inscription
mardi 6 août 2013
Statut
Membre
Dernière intervention
16 août 2013
13 août 2013 à 16:53
13 août 2013 à 16:53
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 et pour la colonne Evenement, la première cellule vide c'est G5
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
15 août 2013 à 13:50
15 août 2013 à 13:50
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) !
Guerschomaly
Messages postés
6
Date d'inscription
mardi 6 août 2013
Statut
Membre
Dernière intervention
16 août 2013
16 août 2013 à 14:08
16 août 2013 à 14:08
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
10 août 2013 à 17:41
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
10 août 2013 à 20:26
C'est pas clair du tout !!!
12 août 2013 à 11:21
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.