pb d'export de données VBA

zbee

XLDnaute Nouveau
Bonsoir,

Ci joint le programme en VBA sur lequel je travaille actuellement.

Explication:
- le fichier macro test contient les macros
il faut prendre en compte la macro nommée requêtes

dans l'onglet "ZONE SAISIE" du fichier macro , y est collé le contenu d'1 fichier d'export
effectué chaque semaine depuis un logiciel de ticketing incidents en respectant un format spécifique (ordre des colonnes)
puis pour lancer la macro je clique sur le bouton macro requêtes.

le but de cette macro est de mettre en forme, d'éclater et d'enregistrer le fichier en autant "d'entités à rappeler"
(pas tout à fait , cf détail dans commentaire macro requête)

C'est lors de la constitution des différents fichiers que la macro ne copie pas les données (le contenu)
il s'agit de la partie 6 du code VBA

Je ne trouve pas pourquoi

Je ne suis pas expert en macro, donc il y a peut-être quelque chose d'évident qui m'échappe

dites moi


je reste à votre disposition pour toute question
 

Pièces jointes

  • Macro_test.xlsm
    60.9 KB · Affichages: 115
  • Macro_test.xlsm
    60.9 KB · Affichages: 146
  • Macro_test.xlsm
    60.9 KB · Affichages: 148

Dranreb

XLDnaute Barbatruc
Re : pb d'export de données VBA

Bonjour.
With Sheets("Feuil1") ?
Pas plutôt With Feuil1 tout court ? J'aime d'ailleurs mieux que With Sheets("ZONE SAISIE")
En tout cas je ne vois pas de feuille nommée "Feuil1" du point de vue d'Excel.
Si c'est le CodeName de "ZONE SAISIE" que vous pensiez employer, il faut l'utiliser seul, sans double quote et sans Sheet parce qu'il se suffit à lui même comme expression Worksheet, tout comme votre variable WC.
Cordialement.
 

bof

XLDnaute Occasionnel
Re : pb d'export de données VBA

Bonjour,
En plus de l'observation de Dranreb...
En première analyse la colonne des villes est "D" et non "C" comme dans le code initial donc le dico ne charge aucune ville...
Je n'ai pas testé, mais il est probable que cela résoud ton problème, me dire, sinon je me replongerai dans le truc...

[Edit] On pourrai rajouter quand même que : tu as mis plusieurs On error resume Next
Un seul suffit et encore à utiliser avec modération... On error resume next c'est : on s'en fout...YAKA continuer !

si tu avais mis un gestionnaire d'erreur dans ton point 6 du genre
Code:
On Error GoTo 0
Tu aurais tout de suite vu la ligne ou ça coince.

A+
 
Dernière édition:

zbee

XLDnaute Nouveau
Re : pb d'export de données VBA

Bonsoir,

C'est à l'endroit suivant que le code n'est pas bon:
une feuille provisoire est bien créée
la ligne d'entête est bien recopiée
mais uniquement la ligne d'entête et pas le contenu !

Code:
  ' A partir de la feuille de W
            With Sheets("Feuil1")
                ' Pour chaque élément de l'Array (Chaque ligne de Feuil)
                For j = LBound(Vill) To UBound(Vill)
                    ' On vérifie si le nom de l'entité à rapppeler correspond à NomVille
                    If Vill(j, 1) = NomVille Then
                        ' Et si c'est le cas on copie toute la ligne dans la feuille cible (WC)
                        .Range(.Cells(j + 1, 1), .Cells(j + 1, 7)).Copy WC.Cells(ii, 1)
                        ' Et on incrémente le compteur de ligne
                        ii = ii + 1
                    End If
                Next j
            End With

- With Sheets("Feuil1") est une feuille provisoire créée pour chaque "entité à rappeler" avant l'enregistrement
- En première analyse la colonne des villes est "D" et non "C" comme dans le code initial donc le dico ne charge aucune ville
La colonne a chargé est bien la C (entité à rappeler)
- oui, le code peut être encore optimisé, mais je l'ai pour le moment écrit bout par bout

Donc vos solutions ne semblent pas résoudre moj pb:(

D'autres idées?
 

Dranreb

XLDnaute Barbatruc
Re : pb d'export de données VBA

Bonsoir
Vous y verriez plus clair en remettant On Error GoTo 0 derrière
[G:G].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
With Sheets("Feuil1") est une feuille provisoire créée pour chaque "entité à rappeler" avant l'enregistrement
Vous ne confondez pas avec la feuille créée par Set WC = Worksheets.Add ?
Elle est vide alors, même si elle s'appelait Feuil1 lors de cette création, ce dont je doute, je ne vois pas ce que vous voudriez en copier de votre With Sheets("Feuil1"). Non à mon avis votre feuille source ça devrait bien être With Feuil1 et non pas With Sheets("Feuil1")
Champs, lui, est bien copié parce qu'il venait de A1:G1 lorsque la feuille Excel "ZONE SAISIE" (de CodeName Feuil1) était encore active mais le reste, d'où voulez vous qu'il vienne ? le With Sheets("Feuil1") plante probablement ainsi que toutes les instruction .Range derrière, mais ça ne se voit pas puisque vous êtes toujours encore en On Error Resume Next

P.S. À votre place ce n'est pas un feuille que je créerais mais un classeur, comme ça la feuille serait dès le départ dans son classeur de destination, et active. Je ne mettrais pas de With, et je ferais simplement:
VB:
Feuil1.Cells(j + 1, 1).Resize(, 7).Copy Cells(ii, 1)
Les CodeName désignent en effet toujours des objets Worksheet de ThisWorkbook même quand c'est un autre classeur qui est actif.
À +
 
Dernière édition:

zbee

XLDnaute Nouveau
Re : pb d'export de données VBA

Bonsoir,

Bon .... effectivement cela fonctionne!
MERCI
mais je dois avouer que j'ai dû mal à comprendre la différence entre With Sheets("Feuil1") et With Feuil1
Je me suis inspiré d'un bout de code glané sur internet sans trop le maitriser

Y- at-il une autre façon de coder cette partie sans passer par la création d'un array?
 

Dranreb

XLDnaute Barbatruc
Re : pb d'export de données VBA

Bonsoir.
la différence entre With Sheets("Feuil1") et With Feuil1
L'expression Sheets("Feuil1") est une expression de type Object qui représenterait l'objet portant le nom "Feuil1" parmi la collection de feuilles de calculs et de feuilles graphiques d'Excel. Feuil est une constante représentant directement un objet de type Worksheet connu du projet VBA du classeur qui porte la macro.
Y- at-il une autre façon de coder cette partie sans passer par la création d'un array
Ce n'est pas un mal de passer par des tableaux, au contraire. Je recommande même de créer une image des valeurs souhaitées dans un gros tableau et de le décharger à la fin d'un coup en l'affectant à la propiété value d'une plage rectangulaire. Chaque utilisation de Range ou Cells est très pénalisante en termes de performance.
Cordialement.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 464
Messages
2 088 630
Membres
103 894
dernier inscrit
tanyroc