Ajout de donnée dans un formulaire
bonsoir ou même bonne nuit pour les tardif comme moi. comment faire pour prendre les information de la colone 1 concernant la ligne cilquet par lutilisateur et reporter le numero dans la case (label10) document numero
les données : ListBox_Resultat (liste issu de ma recherche)
colonne 1 n° de document a recuperer (celui de ligne choisi dans le liste)
Label10 (lieu de destination du n° recuperer dans ma liste)
Private Sub ListBox_Resultat_Click()
Dim i&
If ListBox_Resultat.ListIndex = -1 Then Exit Sub
With ListBox_Resultat.ListIndex
Label10.Caption = Listbox_Resutat(Listbox_Resutat.Select, 1)
End With
End If
End Subcar toutes mes aproche de code plante en touche
merci
Bonjour
Essayes
Private Sub ListBox_Resultat_Click()
Me.Label10.Caption = Me.ListBox_Resultat.list(Me.ListBox_Resultat.ListIndex, 0)
End Submerci a vous banzai64 cela fonctionne, mais puije abuser de votre patience ?
voila avec la valeur inscrit dans mon Label10 je veut comparer cet valeur dans ma base pour reperer le contenue et ecrire ce contenu dans mon tableau alors j'ai pondu le code si desous mais a chaque fois je me melange les pinceaux pourrait t'on me corriger sans vraiment me donner la solution pour que j'arrive a reproduire ce genre de requette a l'avenir merci d'avance.
je détail :
en 1 je selectionne ma base de recherche en l'occurence base_commande
If ComboBox1.Value = ("commande") Then
With Sheets("base_commande").Selecten deux je lui demande de rechercher dans ma base le contenu de mon Label10 qui correspon a un n° situer dans la colonne ("A") de ma base
Label10 = Sheets("base_commande").Range("A").End(xlUp)puis je lui dit ou mettre le contenu dans mon tableau
i = Sheets("recup").Range("A65536").End(3)(2).Row
.J1 = Range(Cells(i, 1))
.nom = Range(Cells(i, 2))
.prenom = Range(Cells(i, 3))
.adresse = Range(Cells(i, 4))
.code_postal = Range(Cells(i, 5))
.ville = Range(Cells(i, 6))
.Date = Range(Cells(i, 7))
.client = Range(Cells(i, 8))
.B15 = Range(Cells(i, 9))
.h15 = Range(Cells(i, 10))
.I15 = Range(Cells(i, 11))
.J15 = Range(Cells(i, 12))
.B16 = Range(Cells(i, 13))
.h16 = Range(Cells(i, 14))
.I16 = Range(Cells(i, 15))
.J16 = Range(Cells(i, 16))
.B17 = Range(Cells(i, 17))
.h17 = Range(Cells(i, 18))
.I17 = Range(Cells(i, 19))
.J17 = Range(Cells(i, 20))
.B18 = Range(Cells(i, 21))
.h18 = Range(Cells(i, 22))
.I18 = Range(Cells(i, 23))
.J18 = Range(Cells(i, 24))
.B19 = Range(Cells(i, 25))
.h19 = Range(Cells(i, 26))
.I19 = Range(Cells(i, 27))
.J19 = Range(Cells(i, 28))
.B20 = Range(Cells(i, 29))
.h20 = Range(Cells(i, 30))
.I20 = Range(Cells(i, 31))
.J20 = Range(Cells(i, 32))
.B21 = Range(Cells(i, 33))
.h21 = Range(Cells(i, 34))
.I21 = Range(Cells(i, 35))
.J21 = Range(Cells(i, 36))
.B22 = Range(Cells(i, 37))
.h22 = Range(Cells(i, 38))
.I22 = Range(Cells(i, 39))
.J22 = Range(Cells(i, 40))
.B23 = Range(Cells(i, 41))
.h23 = Range(Cells(i, 42))
.I23 = Range(Cells(i, 43))
.J23 = Range(Cells(i, 44))
.B24 = Range(Cells(i, 45))
.h24 = Range(Cells(i, 46))
.I24 = Range(Cells(i, 47))
.J24 = Range(Cells(i, 48))
.B25 = Range(Cells(i, 49))
.h25 = Range(Cells(i, 50))
.I25 = Range(Cells(i, 51))
.J25 = Range(Cells(i, 52))
.B26 = Range(Cells(i, 53))
.h26 = Range(Cells(i, 54))
.I26 = Range(Cells(i, 55))
.J26 = Range(Cells(i, 56))
.B27 = Range(Cells(i, 57))
.h27 = Range(Cells(i, 58))
.I27 = Range(Cells(i, 59))
.J27 = Range(Cells(i, 60))
.B28 = Range(Cells(i, 61))
.h28 = Range(Cells(i, 62))
.I28 = Range(Cells(i, 63))
.J28 = Range(Cells(i, 64))
.B29 = Range(Cells(i, 65))
.h29 = Range(Cells(i, 66))
.I29 = Range(Cells(i, 67))
.J29 = Range(Cells(i, 68))
.B30 = Range(Cells(i, 69))
.h30 = Range(Cells(i, 70))
.I30 = Range(Cells(i, 71))
.J30 = Range(Cells(i, 72))
.B31 = Range(Cells(i, 73))
.h31 = Range(Cells(i, 74))
.I31 = Range(Cells(i, 75))
.J31 = Range(Cells(i, 76))
.B32 = Range(Cells(i, 77))
.h32 = Range(Cells(i, 78))
.I32 = Range(Cells(i, 79))
.J32 = Range(Cells(i, 80))
.B33 = Range(Cells(i, 81))
.h33 = Range(Cells(i, 82))
.I33 = Range(Cells(i, 83))
.J33 = Range(Cells(i, 84))
.B34 = Range(Cells(i, 85))
.h34 = Range(Cells(i, 86))
.I34 = Range(Cells(i, 87))
.J34 = Range(Cells(i, 88))
.B35 = Range(Cells(i, 89))
.h35 = Range(Cells(i, 90))
.I35 = Range(Cells(i, 91))
.J35 = Range(Cells(i, 92))
.B36 = Range(Cells(i, 93))
.h36 = Range(Cells(i, 94))
.I36 = Range(Cells(i, 95))
.J36 = Range(Cells(i, 96))
.B37 = Range(Cells(i, 97))
.h37 = Range(Cells(i, 98))
.I37 = Range(Cells(i, 99))
.J37 = Range(Cells(i, 100))
.B38 = Range(Cells(i, 101))
.h38 = Range(Cells(i, 102))
.I38 = Range(Cells(i, 103))
.J38 = Range(Cells(i, 104))
.B39 = Range(Cells(i, 105))
.h39 = Range(Cells(i, 106))
.I39 = Range(Cells(i, 107))
.J39 = Range(Cells(i, 108))
.B40 = Range(Cells(i, 109))
.h40 = Range(Cells(i, 110))
.I40 = Range(Cells(i, 111))
.J40 = Range(Cells(i, 112))
.total = Range(Cells(i, 113))
.acompte = Range(Cells(i, 114))
.net_a_payer = Range(Cells(i, 115))
.reglement = Range(Cells(i, 116))
.mail = Range(Cells(i, 117))
.G12 = Range(Cells(i, 118))
.tiers1 = Range(Cells(i, 119))
End With
End Ifenfin je lui demande de m'afficher le resultat
Unload Me
Sheets("recup").Range("A1").Select
End Subpour le moment ca plante a : Label10 = Sheets("base_commande").Range("A").End(xlUp)
merci d'avance pour vos lumières
Bonjour
J'avais commencé à regardé ici
https://forum.excel-pratique.com/excel/indexe-une-liste-t37394.html
Le problème c'est que l'on ne sait pas ou les données de la ligne cliquée doivent aller
Dans les base de données tu devrais noter les endroits ou va la cellule du dessus
Exemple dans la page "Base_Facture" cellule A18 tu y notes dans quelle cellule de la page "recup" la donnée en colonne A doit aller, et tu fais pareil pour toutes les colonnes et pour toutes les pages "Base..."
Car en lisant ton code on ne sait pas où tes cellules sont recopiées
Il faudra dire si le fait de re-cliquer sur une autre ligne de la ListBox_Resultat remplace les données existantes dans la page "recup"
A te lire
banzai64 je commence a comprendre, ce que je veut faire c'est prendre le n° present dans mon label10, le comparer avec ma base (base_facture) pour reperer le contenue de la ligne ou il se trouve puis reporter ce contenu dans ma page recup qui est en fait un model de facture qui se retrouvera donc rempli et ceux afin de pouvoir rafficher une facture enregistré.
donc quand a la lecture de mon code tu me dit que l'on ne sait pas ou les donné doivent aller !
exemple sur une ligne dans ma base facture je vais avoir le non ,le prenon, la date etc. je veut donc prendre avec la ligne qui a été reperé dans ma base, reporter le nom dans la case nom de ma feuille recup et ainsi de suite .
en fait je progresse mais j'ai encore beaucoup de mal dans l'ordre des chose , pour faire simple dire avec un code tu prend cela avec tu tu compare et tu selection puis tu met le contenu la
pour la question dans la colonne A de ma base il y a le n° de document je vais donc reporter ce numero dans la case J1 de recup
.J1 = Range(Cells(i, 1)) car quand j'écrit cela dans ma tete cela veut dire que sur recup J1 est egale a la celule de la ligne reperé dans la colonne 1 (A) de base facture
pour lol j'ai surement de tres grande oreilles !
merci pour le lumière
pour suite quand tu me dit si on reclique sur une autre ligne de la listbox_resultat, cela ne pose pas de probleme car quand on clique sur une ligne on ne fait que remplacer la valeur de mon label10 et le traitement du label ce fait que quand on clique sur entrer et a ce moment la on est rediriger vers la page recup rempli des données choisi, pour faire une autre recherche il faut re cliquer sur recherhcer puis efectuer une nouvelle recherche
mon fichier mondifier si dessou
merci
Bonjour
Si je t'ai demandé de noter la correspondance entre la cellule de la base et la cellule de la page "recup" c'était pour te proposer un code
Mais si tu veux le faire, pas de problème
.J1 = Range(Cells(i, 1))ne veut rien dire il faurait un truc du genre .Range("J1") = Range(Cells(i, 1))
A quoi correspond (exemple)
.nom = Range(Cells(i, 2))Je viens de regarder la structure de tes bases, elles sont identiques à 99%, cela serait bien (et surtout pratique de n'avoir qu'une seule base)
Avoir 3 bases cela complique car par exemple avec le numéro "2013 -00002" tu as une personne différente pour la facture et pour le devis
Tu as une liste des clients, a mon avis, ce n'est pas la peine de recopier toutes les informations du client dans les bases, copier juste Nom, Prénom et Numéro de client
Tu dis ce que tu en pense
en fait cela fonctionne comme suit :
dans ma page facture on creer des clients et des documents comme des facture, des devis et des commandes voila pourquoi j'en n'est fait 3 car pour la numerotation comme cela c'etait plus simple pour moi, puis quand on l'enregistre ma page facture est reinitialisé. mais si on veut revoir un document dans le but de le modifier par exemple (de devis vers bon de commande) sans avoir a tous resaisir j'ai fait une page recup qui me permet de reafficher le document dans sont etat d'origine (en coservant tous les paramettre comme la date car dans facture la date est toujours celle du jours) voila pourquoi j'ai fait un formulaire de recherche qui va selectionner en fonction du type de documents la base (combobox vec comme choix "facture ou commande ou devis") puis donc ma listbox_resultat affiche la recherche dans la base choisi, jusque la ca marche puis si on clique et cela grace a toi le n° choisi va se mettre dans mon label et enfin c'est la que je patauge un peut pour recuperer le contenue de ma base et l'afficher dans recup je pensais donc que quand j'écrivais .J1 (destination dans recup) = Range(Cells(i, 1)) (source des données a reporter) mais quand je lance mon code il me dit erreur sur la ligne
Label10 = Sheets("base_facture").Range("A").End(xlUp).Selectj'essaye donc de comprendre l'erreur qui n'est qu'un mauvais renseignement entre la provenance le choix et la destinnation
je sait tres bien que tu peut me pondre un code qui va fonctionner ce pour lequel je te témoigne une immense gratitude, mais se serais dans ce cas une solution de facilité et j'aimerais comprendre pour ne pas appeler au secour pour un oui ou pour un nom
j'ai beau chercher par tous rien n'explique jamais la chronologie des chose dans tous les exemples des differents tutos du coup quand comme mois on debute on a tendance a toujours rajouter des choses tres compliquées alors que les solution son souvent simple la preuve plus haut quand tu ma suggéré le code pour mon label le mien partait dans tous les sens alors que la solution tennait sur une ligne
au plaisir de te lire
re banzai64
- Tu as une liste des clients, a mon avis, ce n'est pas la peine de recopier toutes les informations du client dans les bases, copier juste Nom, Prénom et Numéro de client
le client peut avoir déménagé par exemple et donc pour l'historique une facture elle ne peut pas avoir déménager sinon cela devient un faut par contre il est vrais que sur un bon de commande ou sur un devis ces infos peuvent etre changer
a+ merci
Bonjour
C'est très louable de ta part de vouloir le faire tout seul
Mais je ne sais pas si c'est la bonne solution pour apprendre que de faire un code, de voir que cela ne fonctionne pas et au lieu de chercher, demander la solution
En lisant les cours VBA de ce site, je suis à peu près persuadé que la solution existe pour récupérer le contenu d'une cellule
pour information (une méthode - ce n'est pas la seule)
Label10 = Sheets("base_facture").Range("A"& Rows.Count).End(xlUp)Je t'ai modifié le code de ton fichier situé sur l'autre post
https://forum.excel-pratique.com/excel/indexe-une-liste-t37394.html
A voir
coucou
effectivement ton code est deja plus facile a lire que le miens , je me suis inspiré et je l'ai modifier pour ma feuille recup et pour mon formulaire mais il bug encore et la je dois dire que excel me fait tourner en hi han lol.
ca donne cela:
Set F1 = Sheets("recup")
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
LigneBase = Me.Label10
With Sheets("base_" & Me.ComboBox1)
.Range("Q1") = .Range("C1") 'type de document
F1.Range("R_num") = .Range("H" & LigneBase) ' Numéro client
F1.Range("J1") = .Range("A" & LigneBase) ' Numéro Facture/Devis/Commande
F1.Range("R_nom") = .Range("B" & LigneBase) ' Nom
F1.Range("R_prenom") = .Range("C" & LigneBase) ' Prénom
F1.Range("R_adresse") = .Range("D" & LigneBase) ' adresse
F1.Range("R_code_postal") = .Range("E" & LigneBase) 'code postal
F1.Range("R_ville") = .Range("F" & LigneBase) ' Ville
F1.Range("R_date") = .Range("G" & LigneBase) ' Date
F1.Range("R_total") = .Range("DI" & LigneBase) ' Total
F1.Range("R_acompte") = .Range("DJ" & LigneBase) ' Accompte
F1.Range("R_net_a_payer") = .Range("DK" & LigneBase) ' Net à payer
F1.Range("R_reglement") = .Range("DL" & LigneBase) ' Réglement
F1.Range("R_mail") = .Range("DM" & LigneBase) ' Mail
F1.Range("G12") = .Range("DN" & LigneBase) ' Téléphone
F1.Range("R_tiers1") = .Range("DO" & LigneBase) ' Tiers 1
Colonne = 9
For Ligne = 15 To 40
F1.Range("B" & Ligne) = .Cells(LigneBase, Colonne)
F1.Range("H" & Ligne) = .Cells(LigneBase, Colonne + 1)
F1.Range("I" & Ligne) = .Cells(LigneBase, Colonne + 2)
F1.Range("J" & Ligne) = .Cells(LigneBase, Colonne + 3)
Colonne = Colonne + 4
Next Ligne
End With
Unload Me
Sheets("recup").Range("A1").Select
End Subet comme mon Label10 est remplie quand on clique sur une des lignes de le recherche par le code suivant
Private Sub ListBox_Resultat_Click()
Me.Label10.Caption = Me.ListBox_Resultat.list(Me.ListBox_Resultat.ListIndex, 0)
End Subqui lui et vu sont origine fonctionne parfaitement (merci a toi)
on a bien dans le label le n° du doc donc pourquoi il me renvoie une erreur sur la ligne " LigneBase = Me.Label10 " et j'ai beau mettre derrière .caption ou autre il s'arrête toujours la
quelle subtilité ai-je raté ?
merci pour la patience.
Bonjour
parce que ton Label n'est pas prévu pour récupérer le numéro de ligne, il est prévu pour récupérer la 1ère colonne de la ligne de la ListBox cliquée
Un conseil,: dans la colonne 10 de la ListBox tu as le numéro de la ligne, vires le Label et sers toi de cela (voir mon code)
pour information j'ai abandonner la gestion du label10 qui ne voulai rien savoir et en m'inspirant cu code de banzai64 que je remercie cela fonction le code final donne donc ceci :
Private Sub ListBox_Resultat_Click()
Dim LigneBase As Long, Ligne As Long, J As Long
Dim Colonne As Integer
Dim F1 As Worksheet
Set F1 = Sheets("recup")
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
LigneBase = Me.ListBox_Resultat.list(Me.ListBox_Resultat.ListIndex, 8)
With Sheets("base_" & Me.ComboBox1)
F1.Range("Q1") = .Range("C1") 'type de document
F1.Range("R_num") = .Range("H" & LigneBase) ' Numéro client
F1.Range("J1") = .Range("A" & LigneBase) ' Numéro Facture/Devis/Commande
F1.Range("R_nom") = .Range("B" & LigneBase) ' Nom
F1.Range("R_prenom") = .Range("C" & LigneBase) ' Prénom
F1.Range("R_adresse") = .Range("D" & LigneBase) ' adresse
F1.Range("R_code_postal") = .Range("E" & LigneBase) 'code postal
F1.Range("R_ville") = .Range("F" & LigneBase) ' Ville
F1.Range("R_date") = .Range("G" & LigneBase) ' Date
F1.Range("R_total") = .Range("DI" & LigneBase) ' Total
F1.Range("R_acompte") = .Range("DJ" & LigneBase) ' Accompte
F1.Range("R_net_a_payer") = .Range("DK" & LigneBase) ' Net à payer
F1.Range("R_reglement") = .Range("DL" & LigneBase) ' Réglement
F1.Range("R_mail") = .Range("DM" & LigneBase) ' Mail
F1.Range("G12") = .Range("DN" & LigneBase) ' Téléphone
F1.Range("R_tiers1") = .Range("DO" & LigneBase) ' Tiers 1
Colonne = 9
For Ligne = 15 To 40
F1.Range("B" & Ligne) = .Cells(LigneBase, Colonne)
F1.Range("H" & Ligne) = .Cells(LigneBase, Colonne + 1)
F1.Range("I" & Ligne) = .Cells(LigneBase, Colonne + 2)
F1.Range("J" & Ligne) = .Cells(LigneBase, Colonne + 3)
Colonne = Colonne + 4
Next Ligne
End With
Unload Me
End Submerci