Signaler

VBA FORMULAIRE / passage à la ligne suivante

Posez votre question Claire comme de l'eau de roche - Dernière réponse le 30 janv. 2017 à 07:33 par Claire_1982
Bonjour à tous,

Je me tourne vers vous afin de vous demander de l'aide. Après avoir essayé des codes trouvé sur le net, d'essayer de comprendre où est mon erreur, je me sens complètement perdue...

J'explique mon projet
sur une feuille Excel appelée "BDD" j'ai pour chaque ligne une date (colonne A) et une équipe (colonne B) comme ci-dessous
A B
1 DATE EQUIPE
2 01/01/2017 JAUNE
3 01/01/2017 BLEU
4 01/01/2017 ROUGE
5 02/02/2017 JAUNE
6 02/02/2017 BLEU
7 02/02/2017 ROUGE

et ainsi de suite jusqu'à ce que je sois au chomage... lol

Je souhaite créer un UserForm afin que ces données apparaissent automatiquement (avec évidemment un controle suivant / précédent) pour sélectionner le jour et l'équipe.
Dans ce même UserForm, je souhaite ajouter pour chaque journée et chaque équipe des TextBox, ComboBox qui seront à compléter après chaque journée de travail

A B C D E F
1 DATE EQUIPE QUALITE ARTICLE A ARTICLE B ARTICLE C
2 01/01/2017 JAUNE
3 01/01/2017 BLEU
4 01/01/2017 ROUGE
5 02/02/2017 JAUNE
6 02/02/2017 BLEU
7 02/02/2017 ROUGE

la colonne C "QUALITE" est la combobox1 que j'ai "alimentée" avec le code suivant :

Private Sub Userform_Initialize()
With.Me.ComboBox1
ComboBox1.AddItem"BON"
ComboBox1.AddItem"MOYEN"
ComboBox1.AddItem"FAIBLE"
End with
End Sub

les colonnes D "articleA", E "articleB" et F "articleF" sont des TextBox où sera rentré un chiffre entre 0 et 100. Ceci étant un exemple (j'ai appris récemment qu'il était malvenu d'envoyer son fichier Excel directement en copie, risque de virus et/ou politesse je ne sais pas) il faut savoir que mes textbox seront nombreuses et que si il n'y à rien concernant cet article, je ne souhaite pas écrire "0" mais laisser la textbox vide.

A B C D E F
1 DATE EQUIPE QUALITE ARTICLE A ARTICLE B ARTICLE C
2 01/01/2017 JAUNE BON 5 2
3 01/01/2017 BLEU MOYEN 1 1
4 01/01/2017 ROUGE BON 1
5 02/02/2017 JAUNE
6 02/02/2017 BLEU
7 02/02/2017 ROUGE


Voici ce que j'ai essayée de faire dans le code VBA

'Pour afficher automatiquement la date et l'équipe dans les textbox1 et 2
Private Sub Userform_initialize()
Me.Textbox1 = Sheets("BDD").Range ("A2")
Me.Textbox2 = Sheets("BDD").Range ("B2")

(ensuite est mon code pour alimenter la combobox1)
with me.ComboBox1
ComboBox1.AddItem"BON"
ComboBox1.additem "MOYEN"
ComboBox1.Additem "FAIBLE"
End With
End Sub


Ensuite j'ai créé un bouton de commande pour valider la saisie avec le code ci-dessous

Private Sub CommandButton1_click()
With Sheets ("BDD")
derligne = .Cells(.Rows.Count, "A".End (x1Up).Row+1
If derligne = 1 Then derligne = 2 'car je ne souhaite pas écraser ma ligne d'en-tête sur la feuille "BDD"

.Range("A" & derligne) = TextBox1.Value
.Range("B" & derligne) = TextBox2.Value
.Range("C" & derligne) = ComboBox1.Value
.Range("D" & derligne) = TextBox3.Value
.Range("E" & derligne) = TextBox4.Value
.Range("F" & derligne) = TextBox5.Value

End with
End Sub

Et là bah je ne comprend pas ça ne fonctionne pas correctement. Avant d'aller plus loin je souhaite vous demander conseil déjà à ce niveau.

Je vous suis très reconnaissante pour votre patience. Merci beaucoup !!! Bisous
Claire
Afficher la suite 
Utile
+2
plus moins
bonsoir Claire,
je vois deux erreurs dans
derligne = .Cells(.Rows.Count, "A".End (x1Up).Row+1

je suggère
derligne = .Cells(.Rows.Count, "A").End (xlUp).Row+1

Je te recommande d'ajouter "option explicit" au début de ton code : cela t'aurait aidé à découvrir une des deux erreurs. Et de compiler ton code avant de l'exécuter : cela t'aurait aidé à découvrir la seconde erreur.
Peux-tu ensuite donner plus de détails à propos de "ça ne fonctionne pas correctement": que vois-tu, message d'erreur?
Cette réponse vous a-t-elle aidé ?  
Donnez votre avis
Utile
+1
plus moins
Bonjour Yg de Belgique,

D'abord merci pour ta réponse, c'est gentil de prendre de ton temps pour mon problème

Ensuite passons aux choses sérieuses; je ne comprend pas ce que tu veux dire quand tu parles d'option explicit (je sais qu'il faut le placer en tout début de code) et encore moins à propos de "compiler le code"

Je vais essayer ce que tu m'as donné pour mon code "derligne", je dois y aller pas à pas histoire de comprendre et pas seulement recopier.

Merci d'avance, vraiment !

Claire
yg_be 2082Messages postés lundi 9 juin 2008Date d'inscription 28 avril 2017 Dernière intervention - 9 janv. 2017 à 16:17
bonjour Claire,
Je te suggère de lire l'article suivant, surtout la section "COMPILER UN PROJET":
http://www.commentcamarche.net/contents/1381-debogage
Entre-temps, tu as pu lire l'article recommandé par Michel (bonjour à lui) à propos de "option explicit"
Répondre
Donnez votre avis
Utile
+1
plus moins
Bonjour tt le monde
.."mes textbox seront nombreuses "...
très flou: Combien as tu de textbox au total ?
----------------------------------------------------
Tu écris
Me.TextBox1 = Sheets("BDD").Range("A2") 
Me.TextBox2 = Sheets("BDD").Range("B2")

alors pourquoi?
.Range("A" & derligne) = TextBox1.Value 
.Range("B" & derligne) = TextBox2.Value


'--------------------------------------------------------------
Tu nous dis pas si tu as une erreur dans ton code: si oui sur quelle ligne
sinon , tu n'as aucun résultat ?

------------------------------------------------------------
tu peux trouver directement la première ligne vide:
au lieu de
With Sheets("BDD") 
derligne = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
If derligne = 1 Then derligne = 2 'car je ne souhaite pas écraser ma ligne

essaies
Dim Ligvid as Long
With Sheets("BDD")
Ligvid=.columns("A").find(what:="";after:=.range("A1")).row
.........ton code....
End With


dans ton code tu sembles avoir oublié le "end with"

-------------------------------------------------------------------
quand tu nous envoie un code mets le entre balises


------------------------------------------------------------------------

le mieux est que tu joignes ton classeur malgré que....
Mettre le classeur sans données confidentielles en pièce jointe sur « mon-partage.fr »
et faire un clic droit-coller le raccourci dans votre message

Dans l’attente


Donnez votre avis
Utile
+1
plus moins
Concernant la très bonne remarque de yg_be sur "option explicit"

lis impérativement ce tuto
http://silkyroad.developpez.com/VBA/LesVariables/
Donnez votre avis
Utile
+0
plus moins
voici l'intgralité de mon code,

Private Sub Userform_initialize() 'pour alimenter la ComboBox1 avec les valeurs"bon" et "moyen"


Me.TextBox1 = Sheets("BDD").Range("A2")
Me.TextBox2 = Sheets("BDD").Range("B2")
With Me.ComboBox1
ComboBox1.AddItem "bon"
ComboBox1.AddItem "moyen"
ComboBox1.AddItem "faible"
End With
End Sub

Private Sub NON_Click() 'pour fermer l'UF quand clic sur NON
Unload UserForm
End Sub

Private Sub commandbutton1_Click()
With Sheets("BDD")
derligne = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
If derligne = 1 Then derligne = 2 'car je ne souhaite pas écraser ma ligne d'en-tête sur la feuille "BDD"

.Range("A" & derligne) = TextBox1.Value
.Range("B" & derligne) = TextBox2.Value
.Range("C" & derligne) = ComboBox1.Value
.Range("D" & derligne) = TextBox3.Value
.Range("E" & derligne) = TextBox4.Value
.Range("F" & derligne) = TextBox5.Value

End With
End Sub
Donnez votre avis
Utile
+0
plus moins
coucou les amis c'est Claire comme de l'eau de roche et je me suis inscrite sur le site comme Claire_1982, ça sera je pense une bonne idée ! Je vais vous envoyer ce qui s'est passé depuis que j'ai essayée de suivre vos conseils
Donnez votre avis
Utile
+0
plus moins
Pour Michel_m

si j'avais dans un premier temps utiliser le code pour afficher ce que contenait la cellule de ma "BDD" et par la suite utiliser le code pour l'enregistrer
Me.TextBox1 = Sheets("BDD").Range("A2") 
Me.TextBox2 = Sheets("BDD").Range("B2")
et
.Range("A" & derligne) = TextBox1.Value 
.Range("B" & derligne) = TextBox2.Value
c'est parce que je pensais qu'il fallait tout de même le re enregistrer... J'ai compris maintenant que ce n'était pas necessaire ! ;-)

concernant mes textbox, j'en ai 40
dont 7 automatiquement alimentées grace au code
me.TextBox1 = sheets("BDD").Range("A2")

dont 7 qui seront alimentées par un code de type "rechercheV" ou "vlookup"
dont 1 qui sera alimentée par la somme de 23 des textbox.
ce qui donne 25 TextBox où il y aura une saisie "manuelle" sur l'userform
Donnez votre avis
Utile
+0
plus moins
voici le fichier en question
https://mon-partage.fr/f/kptxp4GP/
Donnez votre avis
Utile
+0
plus moins
et merci aussi à Yg de Belgique ! Il me semble que ton code
derligne = .Cells(.Rows.Count, "A").End (xlUp).Row+1
fonctionne mais ça va enregsitrer sur la première ligne vide après celles que j'ai commencée à saisir concernant les éléments de dates et d'équipes. Du coup je me demande si je ne suis pas partie dans une impasse avec Derligne...
Donnez votre avis
Utile
+0
plus moins
Bonjour,

Avec le décalage horaire ce va pas être évident de suivre car à chaque fois, il va falloir de remémorer le système

Que veux tu faire ?

A une date précise pour une qualité et une équipe, remplir les textbox colonnes roses (et vertes) ?

Comment remplis tu la partie grise ? écriture dans BDD, saisie dans Userform ?
normalement la nouvelle journée pourrait être faite par formules à partir de la date

Si oui, la donnée "clé" dans l'userform serait la date (je 'ai pas compris les valeurs des colonnes B C D)
Claire_1982 121Messages postés mercredi 11 janvier 2017Date d'inscription 15 mars 2017 Dernière intervention - 11 janv. 2017 à 16:13
Bonjour, oui chaque équipe, pour chaque journée, remplir les textbox
la partie grise est déjà enregistrée et me sert à alimenter l'userform pour les dates et équipes.
colonne B : semaine calendaire
colonne C : semaine au sens du rapport que je dois remettre chaque semaine allant du mercredi au mardi
colonne D : semaine au sens du briefing, notre réunion hbdomadaire qui va du jeudi au mercredi.
Répondre
Donnez votre avis
Utile
+0
plus moins
Ok, donc je pense que La 1° chose à faire est de saisir la date de relevé dans ton userform et peut ^tre modifier la présentation en mettant la date en haut et à gauche

question,
ce sont que les agents qui les saisies qui utilisent Usf ou l'utilises tu pour créer une nouvelle journée ?

tu dis...
michel_m 14665Messages postés lundi 12 septembre 2005Date d'inscription ContributeurStatut 28 avril 2017 Dernière intervention - 12 janv. 2017 à 09:22
Bonjour

Mais QUELLE date ?

La date que tu as rentrée sur la 1° ligne vide ?
je n'y comprend plus rien à ton truc, notamment pourquoi toujours afficher sur l'userform l'année en A2 et la semaine en A2 ?


( en attendant j'ai automatisé la Bdd par formule la partie grise, je t'enverrai ça + tard quand tu m'auras exprimé clairement ce que tu veux faire)
Répondre
Claire_1982 121Messages postés mercredi 11 janvier 2017Date d'inscription 15 mars 2017 Dernière intervention - 12 janv. 2017 à 16:24
bonjour Michel et grand merci pour le temps que tu prends pour moi !

La date... aujourd'hui nous sommes le 12 janvier, et donc je dois faire saisir nos chiffres concernant cette journée. c'est pour cela que je souhaite que la date apparaisse sur l'userform, comme cela mes opératrices pourront (grace à un bouton "suivant" "précédent" ) sélectionner la date correspondant à la journée actuelle (c'est pour cela que j'ai pré rempli la BDD) on sélectionne la date correspondant à la journée en cours, on saisit grace à la combobox l'équipe voulue et on commence la saisie.

J'espère avoir été aussi claire que je m'appelle Claire, désolée...

Merci beaucou p !!!
Répondre
Claire_1982 121Messages postés mercredi 11 janvier 2017Date d'inscription 15 mars 2017 Dernière intervention - 13 janv. 2017 à 04:49
on parle de la date de la colonne E de mon tableau Excel, onglet BDD qui se reporte dans la textbox2
Concernant le numéro de semaine et l'année, peut etre je me suis trompé en indiquant A2, je souhaite simplement faire apparaitre l'userform avec les informations contenues par ligne de la partie grise.
Répondre
Claire_1982 121Messages postés mercredi 11 janvier 2017Date d'inscription 15 mars 2017 Dernière intervention - 13 janv. 2017 à 05:05
https://mon-partage.fr/f/2kszohhc/
Voici ce que je souhaiterai voir afficher pour la ligne 2 de la BDD, bien entendu en cliquant sur suivant j'aurai accès avec la ligne 3 de la BDD à l'équipe 2,
puis avec la ligne 4 à l'équipe 3,
puis avec la ligne à l'équipe 4
puis avec la ligne 6 à l'équipe 5,
puis avec la ligne 5 à l'équipe 6,
puis avec la ligne 6 puis l'équipe 7.
Ensuite nous passerons au 2 janvier 2017, équipe 1 avec la ligne 8
et ainsi de suite...
Répondre
Claire_1982 121Messages postés mercredi 11 janvier 2017Date d'inscription 15 mars 2017 Dernière intervention - 13 janv. 2017 à 09:02
C'est ce que l'on doit voir au début AVANT la saisie, comme ça pas de soucis pas d'erreur, je cherche la journée, l'équipe, et je saisis les données dans les textbox
En gros, les colonnes grisées (un peu bleues je l'avoue) de mon onglet BDD sont à afficher lorsque l'on ouvre l'UF grace aux boutons "précédent" et "suivant", et on saisit les données correspondant aux colonnes roses et vertes
Répondre
Donnez votre avis
Utile
+0
plus moins
bonjour
c'est parti. sois patiente car il y a du boulot et je n'ai guère de temps aujourdhui... vu la météo je ne sortirai guère ce WE donc guette d'éventuels nouveaux messages de ma part...

concernant la Bdd la nouvelle journée s'inscrit par une macro copier-coller-formules ( à partir du jour (hier+1) la semaine ISO, le numéro, la nuit etc sont écrits automatiquement.)
l'userform s'ouvre sur la date du jour (par ex vendredi 1" janvier 2017)
Pour l'équipe je remplace le Textbox par un combo

@+
Donnez votre avis
Utile
+0
plus moins
Bonjour Michel, bien reçu ton message, je suis là aussi ce week end je reste attentive.

Merci beaucoup !!!!!!!!!

A très vite, Claire
Donnez votre avis
Utile
+0
plus moins
Bonjour

pas terminé (très, très gros boulot qui est plus qu'un simple coup de main de forum!... ) mais un premier jet pour les saisies du jour des postes

https://mon-partage.fr/f/BPeKCxj3/

Claire_1982 121Messages postés mercredi 11 janvier 2017Date d'inscription 15 mars 2017 Dernière intervention - 14 janv. 2017 à 10:58
Bonjour Michel !

J'ai regardé bièvement, car je dormais (Tahiti -11 heures) c'est formidable ce que tu as fais ! Je me retourne me coucher, Je te renvoi un messasge demain pour moi.
Profite bien de ton week end et de ta famille, merci beaucoup !
PS : Je dois t'envoyer une carte postale de Tahiti c'est la moindre des choses !

Merci encore,

Claire
Répondre
michel_m 14665Messages postés lundi 12 septembre 2005Date d'inscription ContributeurStatut 28 avril 2017 Dernière intervention - 14 janv. 2017 à 11:03
Bon dodo !!!
Profite bien de ton week end et de ta famille
je suis de tour de ménage...Pôvre de moi !
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour

ci joint version 2
https://mon-partage.fr/f/s9cqiA1A/

mais ta feuille bdd semble inadaptée pou la gestion des appels
Claire_1982 121Messages postés mercredi 11 janvier 2017Date d'inscription 15 mars 2017 Dernière intervention - 18 janv. 2017 à 06:17
Bonjour Michel, tu vas bien ? J'espère que ton week-end s'est bien passé (en oubliant la partie ménage bien entendu !)
De mon côté, je m'excuse de ne pas avoir répondu plus tôt, j'ai eu quelques problèmes et j'ai attrapée une bronchite (et oui même à Tahiti !)
Bref, je suis de nouveau dans la course pour ce projet (trop d'erreurs de saisies de la part de mes opératrices, trop de fichiers différents, pollution du réseau...) voilà pourquoi je me suis lancée dans ce formulaire unique de saisie (une seule saisie avec des gardes fous = efficacité !) Bon j'envoi ce premier message et je te répond sur le reste
Répondre
Claire_1982 121Messages postés mercredi 11 janvier 2017Date d'inscription 15 mars 2017 Dernière intervention - 18 janv. 2017 à 06:51
Concernant la partie "poste"
Il y a effectivement 22 postes à créér, j'ai modifié le fichier excel en conséquence
https://mon-partage.fr/f/iyapQEJO/
si tu peux juste me dire si j'ai bon stp.
Répondre
Claire_1982 121Messages postés mercredi 11 janvier 2017Date d'inscription 15 mars 2017 Dernière intervention - 18 janv. 2017 à 07:05
Si j'ai je "clic" trop facile dans la "préparation de la nouvelle journée" et que j'ajoute par conséquent 2 ou 3 nouvelles journées sur l'onglet BDD, je supprime les lignes en question, mais quelque chose se passe dans la colonne H "trimestre" #REF!
je t'envoi ci dessous le fichier avec cette erreur. Est-ce normal docteur ?
https://mon-partage.fr/f/b5PhEaCD/
Répondre
Claire_1982 121Messages postés mercredi 11 janvier 2017Date d'inscription 15 mars 2017 Dernière intervention - 18 janv. 2017 à 07:58
Concernant l'ajout du bouton "précédent" permettant de modifier une saisie précédente à la journée en cours, il y a un problème lorsque l'on clic dessus :
message : Erreur de compilation : étiquette non définie"
Répondre
Claire_1982 121Messages postés mercredi 11 janvier 2017Date d'inscription 15 mars 2017 Dernière intervention - 18 janv. 2017 à 08:23
Beaucoup de questions.... désolée d'user de ta patience et de ton temps...
J'ai essayé de recherché sur le net par rapport à l'étiquette, j'ai une tonne de code différents mais qui ne correspondent pas... ou qui aggrave encore plus le problème.... grrrr
Encore un grand merci à toi, c'est formidable ce que tu as fait là !
Pour la partie 'appels" je t'envoi plus tard une explication

Bisous, Claire
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour

https://mon-partage.fr/f/2nez4ddF/

GROUPE TES REMARQUES EN UN SEUL ENVOI !!!

pour les 22 postes :OK

pour ref! dans trimestre cela vient de la semaine ISO: donc la formule est
=SI(B2>=52;4;ENT(MOIS(E2)+5)/6) copiér coller dans les journées et le dummy

..."Concernant l'ajout du bouton "précédent" permettant de modifier une saisie précédente à la journée en cours, il y a un problème lorsque l'on clic dessus :
message : Erreur de compilation : étiquette non définie"...


normal, ligne est fonction du jour donné dans la macro éxecuter saisies; on ne peut pas attaquer par uderform initialize

Edit 10;30h

comme tu parlais pour 2 ans,avec 19 jours et sans beaucoup de données dans les postes, ton classeur pèse déjà 6 Mo soit pour1 an 115 Mo !!!!
Claire_1982 121Messages postés mercredi 11 janvier 2017Date d'inscription 15 mars 2017 Dernière intervention - 30 janv. 2017 à 07:33
Coucou Michel, désolée pour tout ce temps sans nouvelle. J'ai eu un soucis de santé et dans la foulée nous avons subit une très grosse tempete avec innondations, nos locaux ont été durement touchés...

J'espère que tu te souviens encore de moi après tout ce temps ! ;-)

Pour répondre à tes derniers commentaires, les données dans les postes ne seront pas nombreuses, j'avais juste fait un test en remplissant toutes les cases, en moyenne nous avons 3 ou 4 postes maximum par journée et par équipe

par rapport à l'utilisation du bouton précédent, je n'ai pas compris ce que tu voulais dire....

En espérant que tu ailles bien, et au plaisir de te lire.

Claire

https://mon-partage.fr/f/JYS1wbhV/

PS : j'ai perdu mon pc portable avec lequel je travaillais de chez moi du coup j'ai désormais Excel 2016, je pense qu'il y a des incompatibilités entre versions. Mais restons comme avant étant donné que nous n'aurons jamais Excel 2016 au travail
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !