Créer une macro

Résolu/Fermé
Lucie17_0626 Messages postés 61 Date d'inscription lundi 21 janvier 2019 Statut Membre Dernière intervention 3 juillet 2020 - 21 janv. 2019 à 21:50
ccm81 Messages postés 10899 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 25 octobre 2024 - 23 janv. 2019 à 20:18
Bonjour,

Sur les classeurs Excel joint à mon post j'ai un bon de livraison sur le classeur 1 et un tableau récapitulatif dans l'autre classeur 2.

Je voudrais que les informations suivantes :

- Nom du destinataire
- Prénom du destinataire
- Désignation
- Quantité
- N°
- N° de livraison
- Date type : 21/01/2019

Présente sur le Bon de livraison soit transférer automatiquement sur mon tableau récapitulatif à l'aide d'une macro relié à un bouton "fin de commande" par exemple comme mon bouton "nouvelle commande" qui rend le fichier vierge et l'enregistre pour une nouvelle commande.

Il y a plusieurs soucis pour moi concernant la Désignation, la quantité et le N°, la plage sélectionnée ne sera jamais pareil pour chaque commande, certaines commandes vont avoir seulement 1 produit et d'autres 20 donc je n'arrive pas à faire le transfert.

Ensuite je voudrais qu'a chaque fois que je termine une commande les autres se suivent au lieu de se mettre à jour sur la même plage de cellule avec un retour à la ligne suivante.

Lorsqu'il y aura plusieurs produit dans la commande je voudrais que le Nom, Prénom, N° de livraison, Date, etc. se duplique selon le nombre de produits.

Le nom, prénom du destinataire et la désignation seront des listes déroulante je souhaiterai donc les enlever dans le tableau récapitulatif.

Et pour finir que toute la commande saisie soit au format Calibri 12.


https://www.cjoint.com/c/IAvuRWq4Plv
https://www.cjoint.com/c/IAvuSpUtUQv

Je remercie d'avance les personnes qui pourront m'aider même pour une petite partie du code

4 réponses

ccm81 Messages postés 10899 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 25 octobre 2024 2 422
23 janv. 2019 à 09:59
Re

le fichier facture
https://mon-partage.fr/f/MXiffhv9/
le fichier récapitulatif
https://mon-partage.fr/f/8wdoFG1W/

Je te rappelle que les deux fichier sont ouverts dans la même session d'excel (dans le menu fenêtre, tu dois les voir tous les deux)

Cdlmnt
1
Lucie17_0626 Messages postés 61 Date d'inscription lundi 21 janvier 2019 Statut Membre Dernière intervention 3 juillet 2020 3
23 janv. 2019 à 20:00
C'est bon tout marche parfaitement j'ai rajouté quelque ligne à la macro en suivant ton modèle et tout est je te remercie pour ton aide précieuse.
0
ccm81 Messages postés 10899 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 25 octobre 2024 2 422
23 janv. 2019 à 20:18
De rien

Si c'est fini, peux tu mettre le sujet à résolu (en haut à droite, la roue dentée)

Bonne soirée
0
ccm81 Messages postés 10899 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 25 octobre 2024 2 422
21 janv. 2019 à 23:03
Bonjour

Un début : le code est dans Module 1
https://www.cjoint.com/c/IAvwdisW4VB

Cdlmnt
0
Lucie17_0626 Messages postés 61 Date d'inscription lundi 21 janvier 2019 Statut Membre Dernière intervention 3 juillet 2020 3
21 janv. 2019 à 23:04
Merci beaucoup pour ton aide.
0
Lucie17_0626 Messages postés 61 Date d'inscription lundi 21 janvier 2019 Statut Membre Dernière intervention 3 juillet 2020 3
22 janv. 2019 à 01:27
Quand je met mes deux fichiers sur des classeurs différent je n'arrive pas a renommer F1

F1 = Workbooks("A").Worksheets("B")
et idem pour F2 comment puis-je régler le problème svp.
0
ccm81 Messages postés 10899 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 25 octobre 2024 2 422
22 janv. 2019 à 17:33
Je ne comprends pas ce que tu veux dire.
Peut être veux tu envoyer les données sur le deuxième fichier au lieu de la deuxième feuille du premier.
En fait, je t'ai proposé un début de réponse, mais c'est à toi de continuer. Si tu as un problème, envoie ton travail et expliques clairement ce qui ne focntionne pas

Cdlmnt
0
Lucie17_0626 Messages postés 61 Date d'inscription lundi 21 janvier 2019 Statut Membre Dernière intervention 3 juillet 2020 3
22 janv. 2019 à 18:58
Bonjour,

Je ne peux pas envoyer mon travail car le fichier est trop volumineux.

Sur la macro que tu m'as envoyé tu as mis les deux fichier dans un même classeur mais sur deux feuilles différentes tu arrives donc a nommer tes constantes : F1=Feuil1 et F2=Feuil2

Dans mon fichier le bon de livraison et le tableau récapitulatif sont sur deux classeurs différents car une personne possède le bon de livraison et une autre possède le tableau récapitulatif donc pour nommer mes constantes F1 se trouve dans un autre classeur d'où mon :

F1= Workbooks("A").Worksheets("B") qui représente la classeur ainsi que la feuille contenant le bon de livraison

C'est de cette partie que viens le problème car lors de la formule With la macro bloque.
Mais je te remercie pour ta réponse précédente qui m'a beaucoup aider.
0
ccm81 Messages postés 10899 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 25 octobre 2024 2 422
22 janv. 2019 à 20:57
Les deux classeurs sont ils ouverts dans la même session d'excel ?
0
Lucie17_0626 Messages postés 61 Date d'inscription lundi 21 janvier 2019 Statut Membre Dernière intervention 3 juillet 2020 3
23 janv. 2019 à 01:22
Oui les deux classeurs sont ouvert dans la même session. J'ai essayer de mettre le bon de livraison sur le même classeur que celui du tableau et en faisant cela c'est à la boucle : With Sheets(F1) que ça bloque "l'indice n'appartient pas à la selection"

Option Explicit

' constantes décrivant la configuration - à adapter

Public Const F1 = "Feuil4"
Public Const celdatF1 = "C2"
Public Const celnumF1 = "C6"
Public Const celvaaF1 = "C10"
Public Const celageF1 = "D10"
Public Const plagefF1 = "$A$20:$C$42"

Public Const F2 = "Feuil3"
Public Const covaaF2 = "A"
Public Const coageF2 = "B"
Public Const codesF2 = "C"
Public Const cocomF2 = "D"
Public Const coimeF2 = "E"
Public Const cobonF2 = "F"
Public Const codatF2 = "G"
Public Const comoiF2 = "H"
Public Const coannF2 = "I"

Public Sub Archiver()
Dim ligne As Long
Dim vaahiva As String, qte As Long, num As Long, dat, moi, ann
Dim nbdes As Long, codes As String, lides As Long, numdes As Long
' recupération des données feuille F1
With Sheets(F1)
vaahiva = .RANGE(celvaaF1).Value
num = .RANGE(celnumF1).Value
dat = .RANGE(celdatF1).Value
moi = Month(dat)
ann = Year(dat)
codes = Split(.RANGE(plagefF1).Address, "$")(1)
lides = Left(Split(plagefF1, "$")(2), Len(Split(plagefF1, "$")(2)) - 1)
nbdes = .RANGE(codes & Rows.Count).End(xlUp).Row - lides + 1
End With
' tranfer dans F2
With Sheets(F2)
' première ligne vide colonne A
ligne = .RANGE(covaaF2 & Rows.Count).End(xlUp).Row + 1
' pour chaque designation
For numdes = 1 To nbdes
.RANGE(covaaF2 & ligne).Value = vaahiva
.RANGE(coageF2 & ligne).Value = Sheets(F1).RANGE(plagefF1).Cells(numdes, 1).Value
.RANGE(cocomF2 & ligne).Value = Sheets(F1).RANGE(plagefF1).Cells(numdes, 2).Value
.RANGE(coimeF2 & ligne).Value = Sheets(F1).RANGE(plagefF1).Cells(numdes, 3).Value
.RANGE(codatF2 & ligne).Value = dat
.RANGE(comoiF2 & ligne).Value = moi
.RANGE(coannF2 & ligne).Value = ann
ligne = ligne + 1
Next numdes
End With
End Sub


J'ai repris le début de code que vous m'aviez donné pour essayer.
0
Lucie17_0626 Messages postés 61 Date d'inscription lundi 21 janvier 2019 Statut Membre Dernière intervention 3 juillet 2020 3
23 janv. 2019 à 01:23
Sur ce code le bon de livraison et le tableau sont sur le même classeur.
En te remerciant pour ton aide.
0