Boucle VBA ne semble pas fonctionner

Bonjour à tous,

j'ai un souci dans ma macro, après deux jours de codage je ne trouve pas pourquoi la boucle ne semble pas fonctionner.

- Classeur1 = TEST - source

- Classeur 2 = TEST - matrice

- Code macro = code actuel ne fonctionnant pas

L'idée de la macro est la suivante :

- pour les clients mentionnés dans l'onglet référencesclients, la macro cherche dans BASE CLIENT si la valeur en colonne F pour cette est "OUI"

- Si ce n'est pas le cas, elle passe à la valeur suivante, sinon :

- Elle copie les données des 4 onglets sources en orange dans le fichier TEST - matrice.

- Pour cela elle génère un fichier temporaire où elle vient coller les données des 4 onglets dans les 4 onglets de destinations.

- Ensuite elle enregistre le fichier en le nommant, puis elle l'envoi par mail à l'adresse mail contact pour ce client dans la BASE CLIENT

- elle ferme le fichier généré et passe au client suivant de l'onglet référencesclients, et ainsi de suite.

- elle génère un rapport d'envoi pour les fichiers traités

En faisant tourner la macro, j'ai l'impression qu'elle bloque dans la fonction Verifierdonnees, je pense qu'elle ne trouve pas la correspondance client. De plus, j'ai bien un temp provisoire qui se génère mais il n'y a aucune donnée dedans. A force de retourner la macro dans tous les sens, j'ai dû m'emmêler les pinceaux dans le code et je ne trouve plus la source d'erreur...

Avec le jeu de données, deux fichiers devraient être générés pour les clients G1 et G2.

Je ne vois vraiment pas ce qui bloque, j'ai essayé de mettre des débug et des MsgBox mais je ne trouve pas le souci. Pourriez-vous m'aider svp?

Par avance merciiiiiiiiii

Bonjour,

Dans quel fichier excel se trouve la macro? et déposez le fichier contenant la macro enregistré en .xlsm

Cdlt

Bonjour,

Vous n'avez pas de DSI capable de vous faire ça, dans votre société Th**** !?

A noter que vous ne devez pas utiliser des mots clés VBA comme variable
Exemple :

For Each Sheet In wbSourceFile.Sheets

Bonjour,

je n'ai pas réussi à mettre le fichier en xlsm car le fichier devient trop lourd, j'ai donc mis le code dans le fichier word qui peut être copier en l'état :/

Re,

C'est ce que vous appelez trop lourd

image

Fichier avec votre code dedans !

Voici le fichier avec le code dedans

13classeur1.xlsm (37.51 Ko)

RachelB,

Il n'y avait pas besoin de le redéposer, on pouvait le faire, c'était juste une information de ma part !

Sinon, de ce que je comprends dans votre code, la macro est apparemment dans un 3ème fichier, pour qu'elle raison ?

Avez-vous essayé de dérouler votre code en mode débogage pas à pas ?
Vous mettez l'instruction "Stop" au début de votre Sub

Sub GenererFichiersClients()
  Stop
  Dim wbSource As Workbook

Comme ça le code s'arrête dessus automatiquement, ensuite vous faite F8 pour avancer dans el code et voir ce qui se passe

ATTENTION !
Si vous avez une instruction d'ouverture de classeur, il faut mettre un "Stop" après, sinon le code va se dérouler tout seul

De plus, vous commencer par la ligne 2 de votre liste dans l'onglet "RéférencesClients" alors qu'il n'y a pas d'entête de tableau et donc G1 n'est pas pris en compte

For i = 2 To lastRowReferences

A+

Mêmes remarques que JExcel2fravec ceci en plus, le code s'arrête ici:

image

où sont les feuilles "Cash Flows" etc...?

Les feuilles cash flows etc sont les onglets de destination (là ou les données doivent être copiées) dans le fichier TEST - matrice qui sert de matrice aux fichiers à générer. Les onglets sources sont dans le fichier TEST - source en orange. Aurais-je inversé les deux ou mal écris la fonction?

Comment avez-vous réussi à identifier avec le mode débeug cette étape? Je n'ai pas réussi ni avec ce mode ni en mettant des MsgBox dans le code à différentes étapes

en faisant du pas à pas avec f8, je ne vois pas ces feuilles (ni moi, ni le code), alors où sont-elles?

Dans le classeur 2, l'idée c'est de copier pour un client les lignes trouvées pour ce meme client dans les 4 onglets en orange du fichier TEST - source (classeur 1), et de venir les coller dans les 4 onglets du fichier provisoire généré à partir de la matrice. Les onglets sont donc censé se trouver dans le temp provisoire qui ets basé sur la matrice :

image

@Arturo83

Il faut faire comme moi renommer le fichier "Classeur2.xslx" en "Matrice.xlsx"

J'ai viré "TEST - " devant dans le code

@RachelB, pourquoi enregistrer les fichiers créés au format ".xlsm" alors qu'ils ne devraient contenir que des données !?

On s'y perd un peu

Pourquoi ouvrir le fichier source une nouvelle fois, alors qu'il suffit de rebasculer vers le fichier en changeant de fenêtre.

' Ouvrir le fichier source pour accéder à l'onglet "Rapport d'envoi"
Set wbSourceFile = Workbooks.Open(userDesktop & "TEST - source.xlsm") ' Ouvrir le fichier TEST - source

ensuite dans la ligne suivante:

newFileName = "Temp_" & clientSAE & ".xlsm"

Que vaut: clientSAE

Oui j'avoue, je crois qu'à force de modifier le code, j'ai inclus pleins d'étapes qui ne servent à rien et qui aboutissent au fait que ca ne fonctionne pas ! Voici ce qu'aurait du faire la macro :
- Pour chaque valeur en colonne A de référencesclients, si la valeur en colonne F dans BASE CLIENT pour ce même client (colonne B) est "NON", on passe au suivant, sinon
- Il faut chercher dans chaque onglet source en orange ce code client (code SAE) : colonne D dans PNS et Encaissement et colonne E dans FAE - PCA et project related to PO et copier toutes les lignes qui renvoient ce code SAE dans les onglets de destination.

Je suis actuellement entrain d'essayer de re simplifier tout ca aussi

Je vous remercie vraiment tous les deux, grâce à vos commentaires, je me suis rendue compte que j'avais codé au fil de mes réflexions et que la macro n'était donc pas du tout clair ! J'ai don repris étapes par étape ce que je souhaitais faire, et cela fonctionne parfaitement ! Je vous remercie grandement, parfois un avis extérieur aide à y voir plus clair et en plus j'ai appris des nouvelles chose :D

Re,

Super RachelB

On apprend tous de ses erreurs, c'est en faisant et défaisant qu'on apprend le mieux

Rechercher des sujets similaires à "boucle vba semble pas fonctionner"