VBA : insérer donnée à partir d'un userform vers une feuille

Bonjour,

Débutant VBA excel 2007

J'ai créer un userform de saisie et j'aimerai en cliquant sur un bt valider entrer les données dans une feuille excel déjà créée.

Quel est le code ? Quel code mettre sur les texte box et autre combobox...?

Bien sur l'info de chaque contrôle doit aller dans une colonne excel (cellule)... bref une chose toute simple quoi !!

J'ai trouvé des codes que je n'arrive pas à faire fonctionner.

J'ai réussi un autre userform mais le bt valider permet d'entrer sur la feuille excel sur la même ligne et décale ensuite en dessous :

Private Sub CommandButton5_Click()
'bouton valider
'1er cellule d'entrée
    Rows("8:8").Select
'ajoute texte puis décale d'une ligne
    Selection.Insert Shift:=x1down, copyOrigin:=x1formatleftorabove
'efface les données puis sort et rouvre
    Unload Saisie_fichier
    Load Saisie_fichier
    Saisie_fichier.Show
End Sub

mais ce n'est pas ce que je souhaite, plutôt un truc du genre :

Private Sub BTCValider_Click()
'Ligne = Range("A65536").End(xlUp).Row + 1
Dim DernLigne As Long
DernLigne = Range("b65536").End(xlUp).Row + 1

End Sub

En plus j'aimerai savoir comment saisir une date dans une textebox et qu'elle apparaisse au format dddd d mm yyyy (jeudi 5 décembre 2013) dans la feuille excel. Est-on obligé de la saisir pareille ?

J'aimerai que les codes soient expliqués pas à pas pour apprendre et pouvoir les reproduire dans d'autres circonstances.

Merci d'avance

Salut et bienvenue sur le Forum,

Au lieu de nous fournir des codes qui ne fonctionnent pas chez toi, tu aurais mieux fait de nous fournir ton fichier avec ton début de UserForm

A te relire ..... et à voir ton fichier.

Cordialement.

Hello Yvouille,

merci de m'accueillir.

Je vais donc joindre mon usine à gaz, mais si je ne l'ai pas fait c'est qu'il me semblait que ma question était assez basique. Les données une fois saisies doivent bien entrer dans une feuille ?!

Donc mon fichier nécessite quelques explications bien sur.

Un classeur avec plusieurs onglets qui sont assez compréhensibles dans leur utilité par leur intitulé.

Deux UF dont un qui me va et fonctionne (Saisie_Fichier). Il s'agit de l'autre Saisie_caisbqu que je commence.

Je te laisse le découvrir pour répondre à tes questions plutôt que partir dans une description dans tous les sens.

Par contre, j'aimerai des réponses pédagogiques plus qu'une solution toute faite que je ne comprendrais pas.

Merci à toi pour ta disponibilité.

PS : Les valeurs entrées sont justes pour les tests

Salut,

Ton fichier n'est pas passé

Essaie en premier :

joindre un fichier

et si ça ne passe toujours pas :

c joint 2013

J'ai bien fait la procédure 1 tout comme il faut... çà ne marche pas à priori !

Pour faire la 2 je ne sais où trouver ce tableau (en bleu) ??

C'est vrai qu'avec le lien c'est quand même mieux

http://cjoint.com/

je crois que j'y arrive !!

https://www.cjoint.com/c/CLgrlKSY1k3

Dis moi ci c'est bon ?

Merci a+

Juste pour te dire qu'au départ les feuilles étaient prévues s'utiliser sans UF et fonctionnent donc sans. Puis j'ai pris mon courage à deux mains pour évoluer vers le vba (et donc l'apprendre) en confiant les saisies à des UF. D'où plusieurs UF en fonction des feuilles à remplir bien qu'un UF puisse servir à plusieurs feuilles ! [je ne sais pas si je suis très clair là !!]

Je pense que tu comprendras en voyant...

Je reconnais qu'on pouvait peut-être faire plus simple, mais comme je t'ai dit, ce n'était pas prévu comme çà au départ puis après j'ai eu la flemme de refaire, je me suis contenté d'aménager pour que çà colle aux UF.

Ouf !

Merci à+

Pardon il s'agit donc de l'UF saisie, des feuilles caisse et banque que j'ai organisées avec des colonnes à remplir identiques.

Bonjour,

Tout d’abord je trouve que ton fichier ressemble passablement à un fichier d’essai, plein de macros dont on ne sait pas trop à quoi elles servent.

Ensuite je dois te dire que je n’aime pas trop les Contrôles ActiveX et je ne comprends pas que tu aies deux macros pour l’ouverture du même UserForm «Saisie_caisbqu» (une fois sur le code de la feuille BANQUE, une fois sur le code de la feuille CAISSE) ; ainsi, si tu veux modifier quoi que ce soit à ce code, tu dois le faire à deux endroits Personnellement j’aurais placé des boutons «du bon vieux temps» sur les deux feuilles et un seul code dans un module.

Ton UserForm «Saisie_caisbqu» est assez complexe et je n’ai pas l’envie de trop le découvrir en entier, mais apparemment ton problème est de récupérer une information que tu y inscris sur une de tes feuilles (contrairement à ce que tu penses, une donnée inscrite dans le champ d’un UserForm peut servir à bien d’autres choses que de remplir les cellules d’une feuille). Je te donne donc deux exemples que tu devrais pouvoir réutiliser pour les autres TextBox et ComboBox. Sinon, reviens à la charge.

Dans le code ci-dessous – qui était déjà en place dans ton fichier et que j’ai simplement transformé – il y a les instructions nécessaires à inscrire à la suite des autres données des feuilles BANQUE ou CAISSE les données inscrites dans le UserForm «Saisie_caisbqu» dans les champs des deux TextBox «TxBCodeClient» et «TxBDate». En plus la date du «TxBDate» est traitée de manière à ce qu’elle corresponde à une date sur tes feuilles Excel.

Private Sub BTCValider_Click()
Dim DernLigne As Long

DernLigne = Range("B" & Rows.Count).End(xlUp).Row + 1
Range("B" & DernLigne) = CDate(TxBDate)
Range("H" & DernLigne) = TxBCodeClient

Unload Me

End Sub

Afin que ton fichier soit moins gros et puisse être placé aisément sur le Forum, j’y ai enlevé les feuilles inutiles à notre discussion.

Ca te permet d’avancer ?

Bonnes salutations.

NB : Evite les messages à rallonge, ça complique souvent les choses. Réfléchi avant d'écrire et poste lorsque tu es certain d'avoir tout dit. Ca fait une demi-heure que je prépare ma réponse dans Word et je découvre ton deuxième message consécutif au moment de poster. Je n'ai pas le courage d'en prendre connaissance et de modifier ma réponse en conséquence Considère donc que je n'ai reçu que ton premier message.

411cyclehop-v1.xlsm (236.21 Ko)

Merci et désolé je ne pensais pas que tu serais aussi prompt car mes messages ne sont pas très espacés.

Bref, je vais jeter un oeil et digérer ce que tu me conseilles à tête reposée.

Merci de ton investissement je vais essayé d'en être digne.

En tous les cas, tu m'as déjà fait découvrir une méthode pour le fichier joint, merci. On s'englue dans ses habitudes, que veux-tu !!

Je sais, je suis un peu bavard quand je m'y mets !! mais sinon j'ai plein d'autres qualités !!

A+

Malheureusement je reviendrais surement...

salut

c'est encore moi... non je déconne !!!

riridenimes a écrit :

c'est encore moi... non je déconne !!!

Peut-on rire de tout ?

Précisez votre question, s'il-vous-plait.

Peut-on rire de la mort, de la faim dans le monde, du sida, de Dieu ?

Oui, bien entendu. On ne plaisante juste pas sur le Forum Excel-Pratique

Je savais que sur excel tu es indéniablement plus fort que moi, mais je viens de découvrir qu'en humour aussi !!

En plus j'ai pas compris çà :

Personnellement j’aurais placé des boutons «du bon vieux temps» sur les deux feuilles et un seul code dans un module.

ni çà que je n'ai pas trouvé

Je te donne donc deux exemples que tu devrais pouvoir réutiliser pour les autres TextBox et ComboBox. Sinon, reviens à la charge.

J'dois être vraiment trop nul !!

Salut,

Personnellement je trouve que l’un des risques sur un Forum tel que celui-ci c’est que l’on se perde en voulant partir dans tous les sens à la fois.

J’ai bien vu que ton UserForm «Saisie_caisbqu» est encore bien incomplet – tu n’as par exemple pas de données qui s’inscrivent à l’ouverture de la forme dans les différents ComboBox comme la «CBxCat» ou la «CBxObjet» - mais j’ai fait exprès de ne te parler que du transfert des données de la UserForm à la feuille afin de commencer par un bout. Pour ce faire j’ai pris deux champs dans lesquels il faut inscrire des données au lieu de partir sur des champs à remplir par une liste – justement comme les ComboBox «CBxCat» ou «CBxObjet» - et je t’ai fourni la macro nécessaire à ces transferts, me disant que ça devait te permettre de continuer le code sur la base de ces exemples.

Alors voilà ce que tu dois faire pour tester mes codes (fournis une fois dans mon dernier texte, une fois dans le fichier joint) : Tu ouvres la UserForm par l’intermédiaire de l’un de tes boutons «SAISIE DONNEES», tu inscrits une date dans le TextBox «TxBDate» (correspondant au libellé «DATE») et un texte quelconque dans le TextBox «TxBCodeClient» (libellé «Code client »).

Lorsque tu cliques sur «Valider», le code Private Sub BTCValider_Click() est lancé. C’est ce code que je t’ai fourni 2 fois selon mes informations ci-dessus.

Dans ce code, la prochaine ligne vide de la feuille concernée est recherchée par l’instruction DernLigne = Range("B" & Rows.Count).End(xlUp).Row + 1, puis la date que tu as saisies est transférée dans la cellule de la colonne B de la prochaine ligne vide par l’instruction Range("B" & DernLigne) = CDate(TxBDate) [note au passage la transformation de la date par l’instruction CDate()] et le code client que tu as saisis est reporté dans la colonne H par l’instruction Range("H" & DernLigne) = TxBCodeClient. Une dernière instruction Unload Me referme ta forme puisqu’il me semblait qu’elle n’était plus nécessaire. Si par contre tu veux que la forme reste ouverte pour une prochaine utilisation sans devoir passer à nouveau par un clic sur un bouton «SAISIE DONNEES», efface cette dernière instruction.

Sur cette base, tu devrais en tout cas déjà pouvoir transférer les données de tous les autres champs sur ta feuille, non ? Si par contre tu as encore des questions au sujet du chargement des listes nécessaires dans les ComboBox, on peut voir ça dans un deuxième temps.

Concernant mes boutons du bon vieux temps, dans le menu «Développeur/Insérer», tu peux choisir entre des boutons «Contrôles de formulaire» ou «Contrôles ActiveX». Je n’utilise personnellement que très peu les «Contrôles ActiveX» et ne les connais pas très bien.

Tu as placé deux boutons «Contrôles ActiveX» sur chacune de tes feuilles «Caisse» et «Banque» et d’après ce que j’ai compris, ça t’oblige à placer deux codes différents qui réagissent chacun à un clic sur l’un ou l’autre des boutons. Donc si tu veux corriger quelque chose dans ces deux codes, tu dois le faire à deux endroits différents. En utilisant des boutons «Contrôles de formulaire», je peux placer 1328 boutons à différents endroits de mon fichier et les relier tous avec un seul et même code. Eventuellement que c’est simplement parce que je ne sais pas comment relier deux boutons «Contrôles ActiveX» à un seul et même code. Mais bon, tu peux oublier ma remarque à ce sujet ; dans ton cas, il semble que tu ne vas pas devoir modifier ces deux codes jumeaux de sitôt.

Amicalement.

Hello

Je voudrais commencer par dire, en toute sincérité, que je salue ta générosité, peut-être due à ta passion, et toutes ces qualités dont tu fais preuve comme patience, rigueur, pédagogie etc... Je ne parle pas de tes compétences, je ne suis pas habilité. Cela fait un peu neuneu de dire cela mais je pense que c'est assez rare pour être doublement souligné car tu prouves, s'il était nécessaire, que la générosité et l'entraide sont bien les premières valeurs humaines au sens les plus importantes. Et comme disait mon "ami" Einstein : "Nous sommes tous de grands ignorants, mais nous n'ignorons pas tous la même chose" Alors merci de partager ta passion et ton savoir.

Je vais répondre à ton message point par point pour être clair car, bien que je le sache (tu remarqueras au passage mon habileté à éviter le fameux "que je le susse" bien que mieux adapté !! ) la communication n'est que source d'interprétation. La mienne étant depuis le départ de croire que, quand tu parles de code, tu parles de ligne de code d'où mon incompréhension et ma recherche du fameux "deuxième code". Tu parlais en fait de la deuxième ligne de code alors que je cherchais un ensemble.

J’ai bien vu que ton UserForm «Saisie_caisbqu» est encore bien incomplet – tu n’as par exemple pas de données qui s’inscrivent à l’ouverture de la forme dans les différents ComboBox comme la «CBxCat» ou la «CBxObjet»

Bien évidemment que mon classeur entier est en construction et comme je t'ai déjà expliqué était prévu pour fonctionner sans vba et autre userforme...

Pour vraiment tout te dire, j'avais déjà rempli les combo mais j'ai du merder dans mes sauvegardes. Je vais retrouver les codes quelque part, cela ne m'a pas paru compliqué faut juste une feuille supplémentaire appelée "données", et dont je me suis servi pour les listes déroulantes de mes feuilles. Tu dois l'avoir si tu n'as pas jetée.

je t’ai fourni la macro nécessaire à ces transferts, me disant que ça devait te permettre de continuer le code sur la base de ces exemples.

Ben justement je n'avais pas compris que toute la manipe consistant à insérer les infos sur toute la ligne, se commandait de ce bouton valider. Je pensais qu'il fallait renseigner chaque textbox et autre combo et que valider ne servait qu'à dire "insère les données sur la dernière ligne vide". J'ai donc réaliser en voyant les codes de valider que tout se passait ici. Une question en passant :

Que vais-je renseigner dans les textbox ? Sont-elles obligées d'être renseignées d'ailleurs ?

Lorsque tu cliques sur «Valider», le code Private Sub BTCValider_Click() est lancé.

Ben "bêtement", c'est la première chose que j'avais faite, de cliquer valider ! Je fus d'ailleurs surpris de la simplicité des codes alors que je cherche sur le net depuis des lustres, des heures à m'embrouiller à lire des codes, à regarder des vidéos etc... Encore une évidence maintes fois répétée : Trop d'info tue l'info ! Une chance que je tombe sur toi, j'allais abandonner.

l’instruction Range("B" & DernLigne) = CDate(TxBDate) [note au passage la transformation de la date par l’instruction CDate()]

Incroyable ! Je ne comprenais pas comment faire pour que cette date s'inscrire sous la forme jjj j mm aaaa ! Je ne m'y retrouvais pas avec cdate et isdate pourtant j'en ai lu des codes et des "explications" avec les formats etc... mais j'ai quand même une question :

Cdate indique que c'est une valeur date (je ne sais pas si valeur est le bon mot) et c'est ensuite le format que j'ai choisi dans la feuille excel qui prime ou est-ce le code vba qui impose un format à la feuile ? (je sens que tu vas me dire que si je n'informe pas de format en vba c'est le format choisi de la feuille qui s'applique ! )

Une dernière instruction Unload Me referme ta forme puisqu’il me semblait qu’elle n’était plus nécessaire

Un des rares trucs que je sais, enfin dont je me souviens... Par contre je ne souhaite pas qu'il se referme vu qu'il y aura surement plus de saisie à faire à la suite (enfin j'espère plein de saisies, vu que c'est du chiffre d'affaire comme tu l'as vu !! )

Je n’utilise personnellement que très peu les «Contrôles ActiveX» et ne les connais pas très bien.

Alléluia ! Quelque chose qu'il ne connait pas très bien sur excel !! Je te dirai que je ne sais pas trop la différence mais chez moi c'est normal !! J'ai trouvé sympa surtout le fait que je puisse, à partir de l'userform, passer d'une feuille à l'autre sans ressortir, rouvrir etc... chose que doit faire le bouton "bascule" mais je n'ai pas voulu me noyer dans l'utilisation de multiples boutons. je préfère connaître bien l'utilisation de deux, trois que mal une dizaine !

D'ailleurs j'ai pensé un moment qu'il serait peut-être mieux de faire carrément une page d'accueil avec les différents boutons d'accès aux userforms puisque qu'à terme les feuilles ne seraient là que pour la consultation. je pense que ce ne sera pas le plus difficile non ? Me tromperai-je ??

Voilà, je vais me mettre au taf pour poursuivre tes indications, retrouver mes codes de combobox. Je voulais aussi dire qu'au niveau de la présentation des feuilles il y aura des colonnes "invisibles" bien sur ! Je vais par la suite revoir aussi la feuille facture qui doit faire devis, commande, facture. Là m’intéresse ce que tu as dis dans un précédent message : les userforms ne servent pas qu'à remplir des feuilles excel, enfin quelque chose comme çà. Dois-je comprendre qu'un userform peut se substituer à une feuille ?

Enfin ceci est une autre histoire...

Merci de ton attention.

A très +

Re-bonjour,

riridenimes a écrit :

Une question en passant : Que vais-je renseigner dans les textbox ? Sont-elles obligées d'être renseignées d'ailleurs ?

Je ne comprends pas très bien ta question. Parles-tu des TextBox de ta forme durant la période de création de ton fichier (donc dans l’explorateur VBA) ou des TextBox de ta forme dans son utilisation sur ta feuille Excel ? Dans tous les cas, lors de l’utilisation normale, tu peux décider si l’utilisateur doit renseigner tel champ ou non, si certains champs ne peuvent accepter que certaines valeurs (du texte, des dates, des nombres, un nombre de 4 chiffres uniquement, etc.), ou que sais-je encore. Par exemple dans une ComboBox, tu peux décider de présenter une liste d’éléments à choix mais d’autoriser ou non d’autres éléments dans ce champ.

riridenimes a écrit :

mais j'ai quand même une question :

Cdate indique que c'est une valeur date (je ne sais pas si valeur est le bon mot) et c'est ensuite le format que j'ai choisi dans la feuille Excel qui prime ou est-ce le code vba qui impose un format à la feuile ? (je sens que tu vas me dire que si je n'informe pas de format en vba c'est le format choisi de la feuille qui s'applique ! )

Selon moi ce n’est pas une «valeur date» mais une valeur au format «date ». J’avais fait des essais sans transformer la valeur TxBDate au format «Date» par l’instruction CDate() et – bien que ton format sur la feuille était un format de date, la valeur reprise du UserForm créait des erreurs dans les colonnes adjacentes. Par exemple la formule =SI(B38=0;0;(DATE(ANNEE(B38);MOIS(B38);JOUR(B38)))) de la colonne C renvoyait une erreur.

A propos de cette formule, je n’ai pas très bien compris ta complication : si tu avais écrit =B38 (éventuellement après avoir corrigé le format de la cellule en «Nombre» après l’avoir écrite, puisque Excel tente parfois de corriger le format des cellules en fonction des données qu’il reconnait) ça serait revenu au même.

riridenimes a écrit :

D'ailleurs j'ai pensé un moment qu'il serait peut-être mieux de faire carrément une page d'accueil avec les différents boutons d'accès aux userforms puisque qu'à terme les feuilles ne seraient là que pour la consultation. je pense que ce ne sera pas le plus difficile non ? Me tromperai-je ??

A toi de voir. Si lors de l’utilisation de ton fichier, tu dois changer de page pour pouvoir cliquer sur un bouton qui lance une macro quelconque, c’est peut-être effectivement mieux de changer le bouton de page. Mais créer une page « de pilotage » pour le simple plaisir de le faire n’est peut-être pas recommandé.

Pour affecter une liste à une ComboBox, tu vas sous le menu « Formules/Gestionnaire des noms » et tu crées un « Nom ». Dans l’exemple ci-dessous, j’ai créé le nom « Catégories_Yvouille ». Puis dans l’explorateur VBA, tu sélectionnes la ComboBox et tu inscrits le nom de ton nom sous « RowSource ». Sans autre option, l’utilisation d’autres données que celles proposées dans la liste est possible dans ce ComboBox lors de son utilisation sur la feuille.

capture 07 12

Si j’ai loupé l’une ou l’autre de tes questions, reviens à la charge.

Amicalement.

Devine qui c'est ?

Je te renvoie mon fichier modifié. Ca a l'air de fonctionner. Bien sur cela génère d'autres questions.... évidemment ! L'homme ne serait pas l'homme sans question... Bon, je vais répondre à ton message déjà.

Je ne comprends pas très bien ta question. Parles-tu des TextBox de ta forme durant la période de création de ton fichier (donc dans l’explorateur VBA)

Oui, c'est à dire, dois-je y mettre forcément un ou des codes et à quoi peuvent-ils servir ? Mais peut-être vas-tu y répondre en même temps que cette question d'ailleurs :

Pourquoi le nombre entré dans txbox crédit ou débit ne se met pas au format que j'ai désigné pour la cellule d'arrivée de la feuille excel, à savoir monétaire, du type 500,00 € ? Et comment faire pour que ce soit le cas ? Est-ce en codant la txtbox crédit ? Où le bouton valider ?

Autre question liée un peu :

La déclaration de variable dernligne as long veut dire numérique et çà fonctionne pour les textes aussi donc ? Mais pas pour le monétaire de la txtbox crédit (ou débit) ? (le monétaire doit être spécifié à part ?)

C'est peut-être ce que tu m'as expliqué plus loin dans ta phrase d'ailleurs ! (Juste une précision, des utilisateurs il ne devrait y en avoir qu'un moi ! Mais ceci dit il faut prévoir que ma boite évolue et qu'il puisse en avoir d'autre il est vrai !!)

J’avais fait des essais sans transformer la valeur TxBDate au format «Date» par l’instruction CDate()

J'avais vu le problème. Donc ma question était : Comment donne-t-il le bon format dans la feuille en mettant dans le code uniquement CDate ? Si je tape dans UF 20/02/2014 il écrit jeudi 20 février 2014, ce que je souhaite nous sommes d'accord. Mais j'ai perdu un temps fou à savoir comment faire avant çà, je n'y arrivais pas, il notait 20/02/2014 dans la feuille aussi. Il y a qqchose que je n'ai pas compris pour que çà marche avec toi !

A propos de cette formule, je n’ai pas très bien compris....

Je ne sais plus trop car je suis sur ce classeur depuis un moment et que je ne m'en occupe pas continuellement (c'est ce qui fait que j'oublie entre temps des choses et rend mon travail laborieux car il faut s'y remettre, rechercher etc... + beaucoup de temps de recherche d'infos sur les sites, les vidéos... qui t'apprennent des choses au fur et à mesure qui te font changer d'idée en te disant : ha mais je peux faire çà ! Du coup tu re-modifies etc...) Donc j'ai ajouté des colonnes par exemple au fil du temps pour me permettre d'utiliser de nouvelles formules que je découvrais. J'ai passé beaucoup de temps avec les index et equiv ou avec sommeprod aussi ! (Que je ne maîtrise toujours pas d'ailleurs !! Je les utilise à l'arrache comme on dit ! Tout dans le feeling )

Mais créer une page « de pilotage » pour le simple plaisir de le faire n’est peut-être pas recommandé

Ben non justement, le fait que les feuilles ne soient plus utiles que pour de la consultation, la saisie serait plus pratique peut-être avec une page d'accueil regroupant toutes les commandes ! Je ne sais pas je verrai quand ce sera abouti. Ta remarque sur les boutons m'intrigue d'ailleurs car il serait peut-être mieux d'utiliser les contrôles que les activeX, s'ils sont plus facile à mettre en place, comme par exemple la création au final d'une page d'accueil ! Je ne me rends pas compte, c'est ton expérience qui parle ! Ou alors, plutôt qu'une page d'accueil, un bandeau de commande regroupant tous les boutons de saisies, recopié sur toutes les feuilles seraient encore mieux. J'ai commencé dans caisse et banque comme tu as vu, ouais je crois que ce sera la meilleure formule en fin de compte.

Merci pour la méthode de liste combobox. Je me souvenais que ce n'était pas difficile vu que je l'avais fait, çà m'a évité de chercher merci merci.

Questions complémentaires :

Comment procédé avec le type de paiements et les boutons d'option pour renvoyer la nature du paiement dans la cellule ?

Comment effacer une ligne d'une feuille en cas d'erreur de saisie sans supprimer la ligne ? Quand je faisais mes saisies directement dans la feuille, il suffisait que j'efface la date pour que la ligne s'efface et çà ne fonctionne plus avec UF.

Apparemment le fichier ne se charge toujours pas je vais donc passer par cjoint dans un message suivant.

Merci à toi (décidément je me répète, faut que j'arrête je crois que tu as compris )

A très +

Bien à toi


Voilà le fichier

A+

Je crois avoir dit une bêtise (genre c'est la 1ère fois !!) concernant la variable dernligne as long. Elle est forcément numérique puisqu'elle s'adresse au comptage de lignes et pas au txtbox et combo.... Ou alors c'est là que je dis une connerie ?!

Je dois avoir les idées plus claires le matin !

Et ne m'engueule pas pour ne pas avoir réfléchi avant d'écrire !!

a++

Salut,

riridenimes a écrit :

Et ne m'engueule pas pour ne pas avoir réfléchi avant d'écrire !!

Non, bien sûr que non Mais la prochaine fois réfléchi quand même avant d'écrire Ce sera plus simple à te lire.

Tu places des avalanches de textes dans tes fils et ce n'est pas toujours facile de faire la différence entre ce qui est essentiel et ce qui est "broderie" ; alors essaie quand même un peu d’être un peu plus concis.

Et puis trop de question à la fois rendent la discussion très pénible. Choisi un ou deux questions précises et attends qu’elles soient résolues avant d’en poser d’autres.

Je choisi donc au hasard quelque unes de tes questions ; à toi de voir plus tard lesquels n’ont pas reçu de réponse.

Page de pilotage

Je t’ai bien dit que c’était à toi de voir ce qui était le mieux au sujet de ta page de pilotage. Je t’ai bien précisé que parfois c’est mieux, parfois c’est moins bien. Mais en aucun cas je t’ai dit de ne pas le faire.

Type Long

Le type de variable Long se rapporte bien entendu à des nombres. C’est selon moi exagéré d’utiliser le type Long dans ton cas, le type Integer (maximum 32000 et quelque) suffisant largement. Mais bon, c’est le type qui était en place et je ne l’ai pas modifié. Pour du texte, tu dois utiliser normalement le type String.

Nombres au format monétaire sur la feuille Excel

Selon ce que j’ai compris, si tu introduits un texte du genre « 50.52 € » dans ton TextBox, Excel va considérer ça comme du texte. Si tu écris « 50.52 », Excel va également considérer comme du texte ou éventuellement comme une donnée « sans format spécifique » et ton chiffre reporté sur la feuille Excel depuis le TextBox ne sera pas considéré comme un nombre (donc il n’est pas visible sur la feuille au format financier, mais plaqué sur la gauche de la cellule, sans € et inutilisable pour des formules dans d'autres cellules). Afin d’y remédier, j’ai cherché une solution du genre CDate(), mais je n’ai pas trouvé. Par contre tu peux transformer le chiffre inscrit dans le TextBox en nombre par un *1 et le tour est joué. Exemple Range("M" & DernLigne) = TxBCrédit * 1. Il faut alors bien entendu ne pas écrire le signe € dans le TextBox.

A te relire.

Ben oui,

Tu places des avalanches de textes dans tes fils et ce n'est pas toujours facile de faire la différence entre ce qui est essentiel et ce qui est "broderie" ; alors essaie quand même un peu d’être un peu plus concis.

je savais bien que je me ferai engueuler !!

Ne me dis pas qu'un garçon intelligent comme toi ne sait pas discerner ce qui est discussion de question !

Je pense que plusieurs questions peuvent être liées à un seul problème quand on essaie de comprendre et apprendre. Malgré mon air con je réfléchis et je ne vois pas où j'ai posé une question qui ne soit pas constructive.

Maintenant je trouve plus sympa d'avoir un dialogue plutôt qu'un simple échange impersonnel d'infos. A mon sens nous faisons une rencontre, virtuelle certes, mais rencontre quand même, et j'aime les rencontres humaines surtout quand les gens sont différents de moi !

Et puis trop de question à la fois rendent la discussion très pénible. Choisi un ou deux questions précises et attends qu’elles soient résolues avant d’en poser d’autres.

Je suis désolé que çà te soit pénible, je te prie de m'en excuser. Il est vrai, et dire que je le sais, qu'il ne faut pas poser plusieurs questions car en général les gens répondent à celles qu'ils veulent et du coup on n'obtient pas toujours l'info attendue.

Malgré tout dans ces "discussions" tu m'apportes des infos que je n'aurais peut-être pas eu au travers de questions.

Je vais donc poser ma question dans le message suivant !

Exposé du problème :

J'ai testé le code qui a généré une erreur :

et pourtant la saisie c'est bien faite dans la feuille excel

L'userform se ferme après avoir cliquer sur valider et génère le message de l'image 1

Aurais-tu une solution ?

Merci

Rechercher des sujets similaires à "vba inserer donnee partir userform feuille"