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
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
-
Merci rhodo pour ton info, voici le lien: https://www.cjoint.com/c/MEDt45bbA6w – viverome 29 mai 2023, 22:00
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
-
grand merci rhodo – 31 mai 2023, 06:04