XLSM75
XLDnaute Nouveau
Bonjour la Team,
Je suis nouveau, première fois que je crée un topic (mais souvent appris grâce au forum).
Je fais appel appel à vous dans le cadre d'une Macro VBA que j'essaie de créer.
L'expression de ma problématique (au mieux )
1. J'ouvre un fichier Excel lambda, sur lequel je vais coller des valeurs (un tableau) : pour le moment, je veux le faire à la Mano
2. Je colle mes données dans cette feuille (à la Mano)
3. Je lance une macro dont le but est de :
Pour résumer la hiérarchie :
TEMPLATE (Donne la norme juste)
SP_KDR -----(Collage de données depuis mon fournisseur perso)------> VBA (Automatisation step 3) ----(Mail)---->SP_Final
Je fais ce vulgaire schéma car ça m'aide également. Je suis totalement profane et je veux apprendre.
Aujourd'hui je bloc vraiment car lorsque je sélectionne la range de la colonne "side" et que je l'ajoute à l'union, la colonne "symbol" disparait.
De plus je ne sais plus si c'est vraiment l'optimum cette méthode, on dirait un bourrin.
Je n'apprécie pas le fait de devoir justifier "plage.copy Destination:=wsw.Range("A1:AZ1000")" car ce n'est pas une bonne soluce (j'aurais aimé définir juste que c'est l'unique feuille de mon fichier qui sera la destination et on commence à la cellule "A1"...mais je n'ai pas réussi.
Si vous pouvez m'aider...je perds espoir.
Merci infiniment
PS(1) : Toutes les datas sont fictives
PS(2): Pour les plus courageux qui arrivent à finir ce long message...je n'ai pas utiliser tous les intitulés du Template client dans le code car je ne sais pas si cette méthode est bonne...je doute...
PS(3): Pour les plus courageux qui arrivent à finir ce long message....merci infiniment
..
..
PS(4): Ne tenez pas compte des commentaires du code, c'est surtout des aides pour moi
CODE VBA :
Je suis nouveau, première fois que je crée un topic (mais souvent appris grâce au forum).
Je fais appel appel à vous dans le cadre d'une Macro VBA que j'essaie de créer.
L'expression de ma problématique (au mieux )
1. J'ouvre un fichier Excel lambda, sur lequel je vais coller des valeurs (un tableau) : pour le moment, je veux le faire à la Mano
2. Je colle mes données dans cette feuille (à la Mano)
3. Je lance une macro dont le but est de :
a. Récupérer les colonnes qui m'intéressent et les ordonner autrement (en gros je veux m'adapter à mon client qui veut des colonnes bien définies).
La "Norme" à respecter est le fichier "SP_Template" dans lequel nous avons des intitulés de colonnes
Par conséquent dans mes données collées (FICHIER SP_KDR) on retrouve en colonne X la valeur "Symbol" avec des données. Cette dernière se trouve en colonne A dans la norme du client
b. Créer un classeur nommé SP_FINAL et horodaté(Fichier final envoyé au client ) dans lequel je vais instruire mes données en respectant la norme du client
Problème 1 : Je ne peux pas chercher des valeurs car certains intitulés de colonnes divergent entre mon tableau fraichement collé (cf Step 1) et le template client. Sachant que le client est Roi et que mon fournisseur de données l'est également.....RRRRRRRR
Soluce = Etant donné que le template client est toujours le même et le tableau collé en step1 aussi je me suis dis de récupérer des Ranges et après je n'aurai qu'à modifier/surcharger les range("1, i").value dans la feuil de mon nouveau classeur.
c. Envoyer par un mail automatique le fichier à mon client. Sachant que le top serait de ne pas à avoir à toucher le SP_FINAL (je justifie juste l'usage de "SWAP_FINAL.Close SaveChanges:=True"dans mon code).
Je n'en suis pas encore à l'envoi auto donc je chercherai de mon côté avant de vous solliciter. Pour les autres étapes j'ai essayé beaucoup de choses. En ce sens, le dernier essai en date est joint via mon fichier perso (SP_KDR dans lequel le module "A_NewFolder" est la version la plus avancée.Pour résumer la hiérarchie :
TEMPLATE (Donne la norme juste)
SP_KDR -----(Collage de données depuis mon fournisseur perso)------> VBA (Automatisation step 3) ----(Mail)---->SP_Final
Je fais ce vulgaire schéma car ça m'aide également. Je suis totalement profane et je veux apprendre.
Aujourd'hui je bloc vraiment car lorsque je sélectionne la range de la colonne "side" et que je l'ajoute à l'union, la colonne "symbol" disparait.
De plus je ne sais plus si c'est vraiment l'optimum cette méthode, on dirait un bourrin.
Je n'apprécie pas le fait de devoir justifier "plage.copy Destination:=wsw.Range("A1:AZ1000")" car ce n'est pas une bonne soluce (j'aurais aimé définir juste que c'est l'unique feuille de mon fichier qui sera la destination et on commence à la cellule "A1"...mais je n'ai pas réussi.
Si vous pouvez m'aider...je perds espoir.
Merci infiniment
PS(1) : Toutes les datas sont fictives
PS(2): Pour les plus courageux qui arrivent à finir ce long message...je n'ai pas utiliser tous les intitulés du Template client dans le code car je ne sais pas si cette méthode est bonne...je doute...
PS(3): Pour les plus courageux qui arrivent à finir ce long message....merci infiniment
..
..
PS(4): Ne tenez pas compte des commentaires du code, c'est surtout des aides pour moi
CODE VBA :
VB:
Public Sub copy()
'##############CREATION NOUVEAU CLASSEUR###############
'###DECLARATION DES VAR###
Dim Symbol As Range, Account As Range
Dim Side As Range, Qty As Range
Dim NetPrice As Range, Crrency As Range
Dim wsw As Worksheet
Dim plage As Range
Dim SWAP_FINAL As Workbook
'##############DEFINITION DATA PLAGE & Copy/Paste###############
Set Symbol = Range("X:X")
Set Account = Range("AG:AG") 'A renommer Account
Set Side = Range("C:C")
Set Qty = Range("D:D") 'A renommer Quantity
Set NetPrice = Range("AA:AA")
Set Crrency = Range("P:P") 'A renommer Currency
'###CHEMIN Nouveau Classeur###
Set SWAP_FINAL = Workbooks.Add
SWAP_FINAL.SaveAs ("C:\Users\"CHEMIN"\SP_FINAL" & Format(Now(), "DD-MMM-YYYY hh mm AMPM") & ".xlsx")
'desactiver alerte excel
Application.DisplayAlerts = False
'###COPY&PASTE###
Set wsw = Workbooks("SWAP_FINAL" & Format(Now(), "DD-MMM-YYYY hh mm AMPM")).Worksheets(1)
Set plage = Union(Symbol, Account, Side, Qty, NetPrice, Crrency)
plage.copy Destination:=wsw.Range("A1:AZ1000")
'###MODIF NOM COLONNE###
wsw.Select
Range("B1") = "Account"
Range("C1") = "Currency"
Range("D1") = "Quantity"
Range("F1") = "Account"
SWAP_FINAL.Close SaveChanges:=True
End Sub