VBA - Ouverture d'un classeur et tableau croisé

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Francky J

XLDnaute Nouveau
Bonjour à tous !



Je rencontre quelques difficultés à traiter des données extraites de SAP.

Je réalise des extractions de SAP vers Excel pour pouvoir traiter par exemple, des commandes (ref produit & quantité)

Mais le soucis est que les quantités sous SAP sont sous cette forme : 25,000 ( correspond à 25 et non 25 000)

Lorsque je transfère tout ça dans un fichier Excel, les valeurs passent de la forme ci-dessus à "25" . Donc plus de virgule.

Cependant, lors de l'ouverture de ce fichier excel via ma macro, toutes ces nombres sont multipliés par 1000 ! Et ce uniquement quand je l'ouvre via ma macro 😕 . Manuellement, rien n'est modifié.

Savez-vous de quoi ça peut venir ?

Voilà mon code pour l'ouverture du fichier extrait de SAP :

Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks.Open("Z:\My documents\SAP\Expé.xls")
Set ws = wb.Worksheets("Expé")



Pour traiter les données brutes présentes dans ce fichier, j'aimerais faire un tableau croisé dynamique. Et là aussi ça coince (aléatoirement). Ca marchait bien jusqu'à ce que je modifie une ligne du code n'ayant aucun rapport avec le tableau croisé, et là j'obtient l'erreur suivante :

"Erreur d'exécution 1004:

Le nom du champ de tableau croisé dynamique n'est pas valide.. blablabla"

Mon code pour le tableau croisé (fait avec l'enregistreur de macro)

Range("A1:U1000").Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Expé!R1C1:R1000C20").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddFields RowFields:= _
"Material"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
" Dlv.qty")
.Orientation = xlDataField
.Caption = "Somme de Dlv.qty"
.Function = xlSum
End With



Si jamais je me suis mal expliqué ou si vous avez besoin des codes en entier ou des fichiers Excel, dites-le moi 😉


Quelqu'un a une idée ?



Franck
 
Re : VBA - Ouverture d'un classeur et tableau croisé

J'ai trouvé d'où venait l'erreur pour le tableau croisé :

elle était causé par une cellule vide, j'ai donc remplacé :

Code:
"Expé![COLOR="#FF0000"]R1C1[/COLOR]:R1000C20").CreatePivotTable TableDestination:="", TableName:= _

par :

Code:
"Expé![COLOR="#FF0000"]R2C3[/COLOR]:R1000C20").CreatePivotTable TableDestination:="", TableName:= _
et ça fonctionne !


Par contre toujours bloqué sur les valeurs multipliées par 1000. D'après moi c'est une histoire de séparateur de nombre, mais je trouve pas 🙁


EDIT : Ca marche plus -_-'

Personne pour m'aider ?
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
2 K
Compte Supprimé 979
C
Réponses
69
Affichages
9 K
Retour