copier coller vers deuxième feuille

0

après avoir créer une base de donnée, est t' il possible via un double click de copier une ligne de cette base vers une autre feuille EX: ajouter sur un devis des articles via une base de donnée

    Posté le 28 mai 2023, 11:06
    par viverome
    Répondre
    0

    Bonjour viverome,

    oui, c'est possible de copier une ligne d'un article d'une base de données sur
    une feuille devis ; pour une réponse plus complète, joins un fichier exemple.

    va sur le site de partage de fichiers cjoint.com (c'est gratuit, et c'est très bien
    expliqué comment faire)
    ; tu devras coller dans ton prochain post ici le lien
    de téléchargement
    que tu auras copié sur cjoint.com (avec le clic droit).

    rhodo

    rhodo Posté le 28 mai 2023, 13:30
    par rhodo
    0

    Bonjour viverome,

    je vais te proposer 2 fichiers différents.  :)

    =================================================================

    voici le 1er fichier "Devis 1.xlsx" (sans macro) :

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

    sur la 1ère feuille "Base article", j'ai mis tes données sous forme de tableau structuré ;
    nom de ce tableau : TArticles ; le T devant le nom n'est pas obligatoire, c'est juste
    pour bien montrer qu'il s'agit d'un Tableau.  ;)

    ne le fais pas maintenant, c'est juste pour info : pour ajouter une ligne de données
    à ce tableau structuré : il suffit d'aller sur la dernière cellule du tableau (ici E6) et
    d'appuyer sur la touche Tab (Tabulation) ; c'est la touche qui est juste à gauche
    de la touche A.

    fais Ctrl F3 ➯ fenêtre "Gestionnaire de noms" ; le nom TArticles est pour le
    tableau entier ; j'ai ajouté le nom Réfs pour la 1ère colonne seulement :
    TArticles[Référence] ; ce nom va servir pour la validation de données.

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

    va sur la 2ème feuille "Devis" ; j'ai un peu amélioré la présentation, et notamment,
    pour chacune des lignes 1 à 4, j'ai défusionné les cellules E à G, puis ensuite,
    j'ai fusionné les cellules F et G ; avantage : les données sont bien séparées des
    libellés de la colonne E ; pour la Date, j'ai mis ce format de nombre : jj/mm/aaaa.

    tu peux voir que j'ai aussi ajouté une case pour le total des montants.

    en A7:A13 : validation de données : Autoriser : Liste ; Source : =Réfs

    grâce au tableau structuré, toute nouvelle ligne qui y sera ajoutée sera prise en
    compte, et la validation de données connaîtra les nouvelles références.  :)

    formule en B7 : =SI(A7="";"";RECHERCHEV(A7;TArticles;2;0))
    formule en C7 : =SI(A7="";"";RECHERCHEV(A7;TArticles;5;0))
    formule en E7 : =SI(OU(A7="";D7=0);"";C7*D7)

    ces 3 formules sont déjà étendues vers le bas jusqu'en ligne 13.

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

    mode d'emploi :

    sélectionne A9 ; choisis un item de la liste déroulante, par exemple "A3"
    ➯ ça met à droite la dénomination "Livre" et le Prix unitaire 40,00 € ;
    ce prix est le Prix de vente.

    sélectionne D9 ; saisis la Quantité que tu veux, par exemple 3
    ➯ ça met à droite 120,00 € ; ce montant est exact, car c'est :
    3 × 40,00 € = 120,00 €.

    dessous, en E15, le total du devis est passé à 1 020,00 €.

    tu peux ajouter 4 autres articles (lignes 10 à 13).

    =================================================================

    voici le 2ème fichier "Devis 2.xlsm" (avec macro) :

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

    sur la 1ère feuille "Base article" : c'est idem : tableau structuré TArticles ; par contre,
    il n'y a plus de nom Réfs car dans ce fichier, il n'y a plus de validation de données.

    fais Ctrl F3 : tu vois seulement le nom TArticles.

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

    va sur la 2ème feuille "Devis" ; la présentation est identique à celle du 1er fichier ;
    la plage A7:D13 est vide : aucune donnée, et aucune formule ; en A7:A13, pas
    de validation de données (c'est devenu inutile vu qu'il y aura un copier).

    formule en E7 (déjà étendue jusqu'en E13) : =SI(OU(A7="";D7=0);"";C7*D7)

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

    mode d'emploi :

    va sur la 1ère feuille "Base article" ; en colonne A, sélectionne la cellule de la
    référence que tu veux ajouter sur le devis ; par exemple, va en A2 pour choisir
    la 1ère référence "A1" ; fais Ctrl e ; ça va sur la feuille "Devis", et tu peux voir
    que ça a ajouté une 1ère ligne de 3 données ; note qu'on ne peut rien faire
    de plus, car ça ne peut pas deviner la Quantité que tu veux mettre.  ;)

    va en D7 et saisis cette quantité, par exemple 2 ➯ Montant : 700,00 €.

    fais pareil que ci-dessus pour chaque ligne d'article ; exemple :

    * sur la 1ère feuille, sélectionne la référence "A2" ; Ctrl e ;
    en D8, saisis 2 ➯ Montant : 200,00 €.

    * sur la 1ère feuille, sélectionne la référence "A3" ; Ctrl e ;
    en D9, saisis 3 ➯ Montant : 120,00 €.

    total du devis : 1 020,00 €.

    on a donc un devis identique à celui qu'on avait fait pour le 1er fichier.

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

    tu avais demandé un double clic, mais tu as pu voir qu'il suffit
    juste de sélectionner la bonne ligne.  :)

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

    code VBA de Module1 (22 lignes) :

    Option Explicit

    Sub CpyArt()
      If ActiveSheet.Name <> "Base article" Then Exit Sub
      If ActiveCell.Column > 1 Then Exit Sub
      Dim lg1&: lg1 = ActiveCell.Row: If lg1 = 1 Then Exit Sub
      Dim cel As Range, réf$, lg2&: Set cel = Cells(lg1, 1)
      réf = cel.Value: If réf = "" Then Exit Sub
      With Worksheets("Devis")
        lg2 = .Cells(Rows.Count, 1).End(3).Row + 1
        If lg2 = 14 Then Exit Sub 'pas d'article sous la ligne 13,
        'car 7 lignes d'articles par devis, des lignes 7 à 13.
        Application.ScreenUpdating = 0
        With .Cells(lg2, 1)
          .Value = réf                           'Référence
          .Offset(, 1) = cel.Offset(, 1)   'Dénomination
          .Offset(, 2) = cel.Offset(, 4)   'Prix unitaire
        End With                                 '   (= Prix de vente)
        .Select
      End With
    End Sub

    =================================================================

    à toi de choisir entre les 2 solutions.  :)

    rhodo

    rhodo Posté le 30 mai 2023, 15:27
    par rhodo
    • grand merci rhodo – 31 mai 2023, 06:04

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :