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

image3

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 Sub

car 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 Sub

merci 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").Select

en 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 If

enfin je lui demande de m'afficher le resultat

Unload Me
Sheets("recup").Range("A1").Select
End Sub

pour 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).Select

j'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 Sub

et 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 Sub

qui 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 Sub

merci

Rechercher des sujets similaires à "ajout donnee formulaire"