Sub Macro1()
Dim RF As Worksheet 'déclare la variable RF (onglet Remise de Facture école)
Dim LP As Worksheet 'déclare la variable LP (onglet Liste de Pointage des commandes)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim PLV As Integer 'déclare la variable PLV (Première Ligne Vide)
Set RF = Worksheets("Remise Facture école") 'définit l'onglet RF
Set LP = Worksheets("Liste de pointage des commandes") 'définit l'onglet LP
TV = LP.Range("I1:L368") 'définit le tableau des valeurs TV
For I = 4 To 368 'boucle sur toutes les lignes I du tableau des valeurs (en partant de la ligne 4)
If TV(I, 1) <> "" Or TV(I, 4) <> 0 Then 'si la donnée ligne I colonne 1 de TV n'est pas vide ou si la donnée ligne I colonne 4 de TV n'est pas vide
PLV = IIf(RF.Range("B44:C44")(1) = "", 44, RF.Range("B43:C43").End(xlDown).Row + 1) 'définit la première ligne vide PLV de la colonne B de l'ongelt RF
RF.Cells(PLV, "B").Value = LP.Cells(I, "A").Value & " " & LP.Cells(I, "B").Value & " " & LP.Cells(I, "C").Value 'renvoie le nom
RF.Cells(PLV, "D").Value = LP.Cells(I, "J").Value 'renvoie la banquie
RF.Cells(PLV, "F").Value = IIf(LP.Cells(I, "I").Value <> "", LP.Cells(I, "K").Value, LP.Cells(I, "L").Value) 'renvoie la valeur
End If 'fin de la condition
Next I 'prochaione ligne de la boucle
End Sub
Bonjour
Ton tableau est très inspiré de bordereau Papier
Si c'est plus simple pour eux, admettons car s'il ont 2010 ou plus on peut s'en débrouiller avec PowerQuery pour pouvoir faire les analyses et ventilations sans coder.
Mais il faudrait a minima en faire un tableau structuré donc
Après il sera facile de restructurer le tableau par PowerQuery pour faire les listes des commandes, les remises en banque etc.
- enlever les colonnes vides
- enlever les cellules fusionnées : c'est quoi la seconde colonne banque ?
- avoir des titres exploitables en analyse donc pas 4 lignes, comme Sapin, en-dessous Epicéa coupé, en dessous la taille et en dessous le prix : mettre Epicéa Coupé 100/150 dans une même cellule. Et on oublie Sapins et Chocolats : ou peut jouer sur les couleurs des titres...
Prévoir une table à part des prix qui valorisera automatiquement par formule la colonne sous-total en fonction des quantités de chaque item (éventuellement tu peux mettre au-dessus des colonnes un rappel du prix unitaire mais qui sera hors tableau, si cela les rassure). On aurait d'ailleurs pu simplifier ta formule actuelle...
Peut-être prévoir une date de remise pour n'extraire à chaque fois que le sous-ensemble
Il faudrait quelques infos sur leur processus d'achat, de perception des commandes et de remise en banque...
Bonjour Stefano, Chris, bonjour le forum,
Peut-être comme ça :
VB:Sub Macro1() Dim RF As Worksheet 'déclare la variable RF (onglet Remise de Facture école) Dim LP As Worksheet 'déclare la variable LP (onglet Liste de Pointage des commandes) Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs) Dim I As Integer 'déclare la variable I (Incrément) Dim PLV As Integer 'déclare la variable PLV (Première Ligne Vide) Set RF = Worksheets("Remise Facture école") 'définit l'onglet RF Set LP = Worksheets("Liste de pointage des commandes") 'définit l'onglet LP TV = LP.Range("I1:L368") 'définit le tableau des valeurs TV For I = 4 To 368 'boucle sur toutes les lignes I du tableau des valeurs (en partant de la ligne 4) If TV(I, 1) <> "" Or TV(I, 4) <> 0 Then 'si la donnée ligne I colonne 1 de TV n'est pas vide ou si la donnée ligne I colonne 4 de TV n'est pas vide PLV = IIf(RF.Range("B44:C44")(1) = "", 44, RF.Range("B43:C43").End(xlDown).Row + 1) 'définit la première ligne vide PLV de la colonne B de l'ongelt RF RF.Cells(PLV, "B").Value = LP.Cells(I, "A").Value & " " & LP.Cells(I, "B").Value & " " & LP.Cells(I, "C").Value 'renvoie le nom RF.Cells(PLV, "D").Value = LP.Cells(I, "J").Value 'renvoie la banquie RF.Cells(PLV, "F").Value = IIf(LP.Cells(I, "I").Value <> "", LP.Cells(I, "K").Value, LP.Cells(I, "L").Value) 'renvoie la valeur End If 'fin de la condition Next I 'prochaione ligne de la boucle End Sub
OUI ! Je suis désolé - une erreur de ma part dans l'utilisation ! MERCI ENORMEMENT !!!Re,
En pièce jointe ton fichier apres exécution de la macro. Les sommes apparaissent bien dans F44:G44, F45:G45 et F46:G46...
Salut Chris,
Merci de ta réponse. Hélas, je ne connais pas PowerQuery et vu que l'objectif est d'utiliser les outils présents à l'école sans complexifier la tache de la directrice ou amener un nouvel apprentissage, Je préfère décliner cette solution. Je garde néanmoins ta remarque plus longtermiste sur la construction de tableaux d'item.
Bonjour à tous
Mais tu prends une solution VBA que l'école ne connait sans doute pas plus...
Une fois les requêtes PowerQuery faites c'est tout aussi automatique que du VBA.