Récupération de données d'un formulaire

Bjr et bravo pour votre engagement

j'ai récupéré ce user form qui extrait des données à partir d'une base et je l'ai adapté à ma base liste article

par contre quand je choisi un article il fait bien son extraction mais change de feuille pour l'enregistrement (ce qui est normal puisqu'il y a l'instruction sheets add)

mais je voudrais que les enregistrements extraits s'inscrivent sur la même feuille (dans mon cas TAB DEVIS) et l'une en dessous de l'autre

ce que je ne sais pas faire

je remercie d'avance la personne qui me trouvera la solution et je suis preneur de toute amélioration bien évidement

Edit Dan : fichier supprimé suite à données confidentielles

Bonjour

Votre fichier comporte des données confidentielles et a été supprimé. J'ai gardé copie pour le reposter dans ma réponse à votre question mais sans les références fournisseurs

mais je voudrais que les enregistrements extraits s'inscrivent sur la même feuille (dans mon cas TAB DEVIS) et l'une en dessous de l'autre

TAB Devis correspond à quelle feuille dans votre fichier ?

le nom exact de la feuille cible est tableau devis excel

desolé

Ok mais cela correspond à quel nom d'onglet ?

Là j'ai feuil1, feuil3, source, listes

Je vous repasse le fichier (j'ai zappé tout ce qui pourrait être confidentiel)

il y a dans le fichier les onglets sommaire, source, liste, tableau devis excel, feuil 4 et feuil3

et dans user form sommaire = feuil 1, source = feuil 2, mes liste = feuil 3 , tableau devis excel = tabdevis

, feuil 4 = feuil 7et feuil3 = feuil 6

Ok merci du fichier mais vous avez supprimé les données de la feuille Mes Listes qui sont nécessaires au chargement de l'USF
Je les remets ?

Votre feuille Tableaudevis, les infos sont à mettre dans quel ordre ?

il n'y a pas d"ordre au fur et à mesure des extractions

Ok mais on y met quoi dans cette feuille Tableau devis ?

Votre usf mentionne nom, prenom, date naissance...

ce qui ressort de l'extraction et qui se met dans une nouvelle feuille (ici feuil 1) et que je voudrais voir sur la feuil tableau devis excel

image

Waaaouuuh ! Fallait comprendre quand je relis le fil

Bon en premier faites ceci dans votre fichier

- Allez dans l'USF frmextractiondata
- Cliquez sur la combob
- allez dans les propriétés de l'objet et supprimez ROWSSOURCE (évitez cette instruction qui profit souvent des soucis avec VBA)
- Collez ce code dans l'usf

Private Sub UserForm_Initialize()
Cboarticle.List = Feuil2.ListObjects("TSource").ListColumns(1).DataBodyRange.Value
End Sub

- Supprimez le nom "Listearticles" dans le gestionnaire de noms
- Dans la feuille Tableau Devis Remettre les titres en ligne 1 identiques à la feuille Source
- Mettre la feuille Tableau devis au format tableau structuré
- Dans les gestionnaire de noms, modifier le nom du tableau de cette feuille -> "TDevis"
- Remplacez le code du bouton Extraire par celui ci -dessous

Private Sub Btnextraction_Click()
'declarer les variables
Dim monarticle As Range
Dim ligArt As Integer
Dim Lig As Integer

ligArt = Feuil2.ListObjects("Tsource").ListColumns(1).DataBodyRange.Find(Cboarticle, LookIn:=xlValues, lookat:=xlWhole).Row

With TABDEVIS.ListObjects("TDevis")
    If .ListRows.Count = 0 Then
        .ListRows.Add: Lig = 1
    Else: .ListRows.Add: Lig = .ListRows.Count 'insérer à la dernière ligne
    End If
    .ListRows(Lig).Range = Feuil2.ListObjects("Tsource").ListRows(ligArt - 1).Range.Value
End With

Votre fichier en retour pour le cas où...

vraiment désolé mais...j'ai ce bug

image

je vous joint le fichier avec ces évolutions

merci encore pour votre patience

Logique, il y a des changements dans le fichier au niveau du gestionnaire de noms
- TDevis était défini jusque la ligne 603. Pourquoi ?
- vous avez ajouté un tableau2

Vous ne devez rien faire dans cette feuille mais si vous supprimez des lignes vous devez chaque fois sélectionner toutes les lignes entre les colonne A et F et ce depuis la ligne 2 jusque la dernière ligne. Ensuite click droite et choisir l'option "supprimer" --> "lignes du tableau"

C'est très important cela sans quoi vous allez encore avoir des soucis. Ou alors on fait un code pour.

Le fichier en retour. repartez bien de celui là.

Bingo pour cette version

vraiment super

en fait sur l onglet source il est prévu de coller un fichier article issue d'une autre base

le colonage reste fixe mais le nombre d'article pourra évoluer

est ce jouable?

encore merci pour votre aide

Bonjour,

en fait sur l onglet source il est prévu de coller un fichier article issue d'une autre base le colonage reste fixe mais le nombre d'article pourra évoluer
est ce jouable?

Je suppose que vous parlez d'ajouter des articles dans la feuille Source. Vous les ajoutez à la suite des autres ou les articles existants sont remplacés par de nouveaux articles ?

c'est une copie qui écrasera les infos précédentes car il y aura des art. nouveaux mais des modifs de prix ou fournisseurs pour les déjà existant

Il y a deux éléments dans votre réponse.

Ce que je dois savoir c'est si vous mettez à jour les articles existants dans la feuille Source ou si vous effacez toutes les données depuis A2 jusque Fx avant de réimporter tous les articles

c'est dans la feuille SOURCE que l'on ferra un copier coller des infos en provenance de l'outil gestion des achats

Cela ne répond pas exactement à ma question.
Je reformule ma question : est-ce que vous effacez au préalable la totalité des lignes de la feuille Source avant d'y mettre vos nouveaux articles

oui c'est du annule et remplace

Bonjour

oui c'est du annule et remplace

Ok. Alors deux solutions lors de la mise à jour de la feuille Source

1. Manuellement :
- Sélectionnez toutes les lignes entre A2 et Fx (x = 237 dans votre fichier posté). Cette sélection ne doit se faire qu'entre les colonnes A et F puisqu'elles correspondent aux colonnes du tableau TSource)
- Click droite sur la sélection
- Choisir "Supprimer" --> "Lignes du tableau"
N'utilisez jamais
la touche SUP ou Delete de votre clavier
A la fin vous ne devez plus voir que la ligne de titre et une ligne vide.

2. Automatiquement via code
- Dans un module, collez ce code et associez-le à un bouton sur votre feuille Source

Sub Effacer() 'macro pour effacer donnees en feuille Source
Worksheets("SOURCE").ListObjects("TSource").DataBodyRange.Delete
End Sub

Je vous conseille vivement d'utiliser la solution 2 qui vous permettra de ne pas perdre le nom "TSource" défini dans le gestionnaire de noms.

Cordialement

Rechercher des sujets similaires à "recuperation donnees formulaire"