Erreur dans ma macro ?
Résolu/Fermé
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
-
Modifié par Ju@nita le 2/05/2016 à 17:19
Utilisateur anonyme - 19 mai 2016 à 12:48
Utilisateur anonyme - 19 mai 2016 à 12:48
A voir également:
- Erreur dans ma macro ?
- Erreur 0x80070643 - Accueil - Windows
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
9 réponses
Utilisateur anonyme
3 mai 2016 à 01:47
3 mai 2016 à 01:47
Bonjour Ju@nita,
J'ai trouvé votre exercice vraiment très intéressant ! Voici 2 liens :
Fichier Word 2003 : Note explicative
Fichier Excel 2003 : Exercice
Quand j'ai voulu créer un lien Cjoint avec le fichier Excel 2007, ça a refusé
sans que je sache pourquoi. Aussi, je l'ai converti en fichier Excel 2003,
et là, ça a marché.
La conversion a changé certaines couleurs et enlevé une mise en forme conditionnelle ; mais quand vous lirez ma note explicative, vous saurez
que ça n'a pas d'importance :
Seuls comptent un nouveau format et la nouvelle macro.
Cordialement. 😊
J'ai trouvé votre exercice vraiment très intéressant ! Voici 2 liens :
Fichier Word 2003 : Note explicative
Fichier Excel 2003 : Exercice
Quand j'ai voulu créer un lien Cjoint avec le fichier Excel 2007, ça a refusé
sans que je sache pourquoi. Aussi, je l'ai converti en fichier Excel 2003,
et là, ça a marché.
La conversion a changé certaines couleurs et enlevé une mise en forme conditionnelle ; mais quand vous lirez ma note explicative, vous saurez
que ça n'a pas d'importance :
Seuls comptent un nouveau format et la nouvelle macro.
Cordialement. 😊
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
3 mai 2016 à 14:12
3 mai 2016 à 14:12
bonjour Albkan,
Heureuse de voir que l'exercice vous ait plu. J'avais pas eu le choix pour la sauvegarde vu qu'il fallait qu'il soit sauvegardé avec macro. Mais j'ai toujours pas compris pourquoi ma macro ne s'exécutait pas comme il faut. La feuille n'était pourtant pas protégée. Mais votre macro est très intéressante, le fait qu'il y ait une bascule, je ne savais pas qu'on pouvait faire ça. J'ai bien aimé l'exécuter et voir le résultat.
Toujours est-il qu'il serait compliqué que je change manuellement le format de chaque colonne dans le fichier original puisque ce fichier provient de quelqu'un d'autre et qui me l'envoie à chaque trimestre. Le but d'une macro est justement d'éviter d'avoir à faire tout ce travail à chaque fois. Je voudrais, quand je reçois le fichier, cliquer sur ma macro (qui serait dans mes macros personnelles avec raccourci dans ma barre d'accès rapide), et je serais prête à facturer avec le résultat voulu. La dernière option (l'idéal) me paraissait irréalisable. Mais si ça vous semble possible (à michel_m aussi), je serais aux anges. Et on oublierait la première option car c'était soit la solution facile, soit la solution difficile.
Je suis toujours fascinée par les solutions proposées sur ce site car je ne sais pas composer des macros directement dans le VBA. Je les fais avec exécution au fur et à mesure avec "enregistrer une macro". Je sais que ça me limite beaucoup mais j'aimerais tellement avoir toutes vos connaissances !
J'attends vos réponses avec impatience :)
bonne journée.
Heureuse de voir que l'exercice vous ait plu. J'avais pas eu le choix pour la sauvegarde vu qu'il fallait qu'il soit sauvegardé avec macro. Mais j'ai toujours pas compris pourquoi ma macro ne s'exécutait pas comme il faut. La feuille n'était pourtant pas protégée. Mais votre macro est très intéressante, le fait qu'il y ait une bascule, je ne savais pas qu'on pouvait faire ça. J'ai bien aimé l'exécuter et voir le résultat.
Toujours est-il qu'il serait compliqué que je change manuellement le format de chaque colonne dans le fichier original puisque ce fichier provient de quelqu'un d'autre et qui me l'envoie à chaque trimestre. Le but d'une macro est justement d'éviter d'avoir à faire tout ce travail à chaque fois. Je voudrais, quand je reçois le fichier, cliquer sur ma macro (qui serait dans mes macros personnelles avec raccourci dans ma barre d'accès rapide), et je serais prête à facturer avec le résultat voulu. La dernière option (l'idéal) me paraissait irréalisable. Mais si ça vous semble possible (à michel_m aussi), je serais aux anges. Et on oublierait la première option car c'était soit la solution facile, soit la solution difficile.
Je suis toujours fascinée par les solutions proposées sur ce site car je ne sais pas composer des macros directement dans le VBA. Je les fais avec exécution au fur et à mesure avec "enregistrer une macro". Je sais que ça me limite beaucoup mais j'aimerais tellement avoir toutes vos connaissances !
J'attends vos réponses avec impatience :)
bonne journée.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 3/05/2016 à 22:33
Modifié par michel_m le 3/05/2016 à 22:33
ci joint proposition macro pour "l'ideal"
en feuille synthèse, traitement quasi instantané macro "main" + macro paramétrée par client dans module "sstotaux"
http://www.cjoint.com/c/FEduuQljlQt
le code
Michel
en feuille synthèse, traitement quasi instantané macro "main" + macro paramétrée par client dans module "sstotaux"
http://www.cjoint.com/c/FEduuQljlQt
le code
Option Explicit
Option Base 1
Dim T_in
Const Code As Integer = 1572
'---------------------------------------------------------
Sub main()
Dim Derlig As Byte, Cptr As Byte
Application.ScreenUpdating = False 'fige défilement écran: confort rapidité
Sheets("synthese").Range("A6:E10000").Clear 'nettoyage
With Sheets("original")
Derlig = .Columns("A").Find("", .Range("A5")).Row - 2 'dernier client
T_in = .Range("A6:CH" & Derlig) 'mémorisation RAM tableau complet: rapidité traitement
For Cptr = 1 To UBound(T_in)
Call par_client(Cptr) 'appel traitement des succursales (client)
Next
End With
With Sheets("synthese")
.Columns("E").NumberFormat = "0.00" 'format 2 décimales
.Activate 'présentation
End With
End Sub
'----------------------------------------------
Sub par_client(Lig)
Dim T_out(), Col As Byte, Cpt As Byte, Ligvid As Integer
For Col = 12 To 85 Step 9
If T_in(Lig, Col) > 0 Then 'si crédit > 0
Cpt = Cpt + 1
ReDim Preserve T_out(5, Cpt) 'mémorisation des traitement pour chaque succursale
T_out(1, Cpt) = T_in(Lig, 1) '#client
T_out(2, Cpt) = T_in(Lig, 2) 'client
T_out(3, Cpt) = Code '#item
With Sheets("original")
T_out(4, Cpt) = .Cells(1, Col - 8) & " " & Format(.Cells(5, Col), "0%") 'fournisseur%
End With
T_out(5, Cpt) = T_in(Lig, Col) 'crédit
End If
Next
Cpt = Cpt + 1
ReDim Preserve T_out(5, Cpt)
T_out(1, Cpt) = "SOUS TOTAL " & T_in(Lig, 2)
T_out(5, Cpt) = T_in(Lig, 86) 'total crédit
'restitution client
With Sheets("synthese")
Ligvid = .Columns("A").Find("", .Range("A5")).Row '1° ligne vide
'restitution T_out
.Cells(Ligvid, "A").Resize(Cpt, 5) = Application.Transpose(T_out)
'mise en gras sous total client
.Rows(Ligvid + Cpt - 1).Font.Bold = True
End With
End Sub
Michel
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
4 mai 2016 à 14:10
4 mai 2016 à 14:10
WOW, je suis très impressionnée par le résultat ! C'est exactement ce que je voulais. Il y a juste deux petites erreurs. Quand j'ai voulu valider si tous les montants y étaient, il manque des lignes dans la feuille synthèse. Par exemple, tous les clients qui ont un montant en négatif qui provient de la colonne AM de la feuille originale n'ont pas cette ligne dans la feuille synthèse. Ex: client 3345, il faudrait qu'on puisse voir : fourn. D (32.71), sinon son total ne serait pas valide. Et tous ceux qui ont un montant dans la colonne CB du fourn. I-A, cette ligne n'y est pas. C'est sûrement pas grand chose. Mais je ne sais pas comment corriger l'erreur :(
Puis-je te demander d'y jeter un coup d'oeil svp ?
un gros merci pour tout ce temps que tu y passes pour moi. C'est énormément apprécié.
Puis-je te demander d'y jeter un coup d'oeil svp ?
un gros merci pour tout ce temps que tu y passes pour moi. C'est énormément apprécié.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 4/05/2016 à 14:36
Modifié par michel_m le 4/05/2016 à 14:36
Bonjour,
effectivement :
changer >0 en =0 dans la macro " par_client"
est ce normal que fournnisseur I A et I B n('est pas de de colonnes "indirect ?
si oui le + simple serait d'insérer 4 colonnes avant BS et BX et de les masquer pour garder le pas de 9 (step 9 dans la macro)
tu dis...
effectivement :
changer >0 en =0 dans la macro " par_client"
For Col = 12 To 85 Step 9
If T_in(Lig, Col) = 0 Then 'si crédit = 0
Cpt = Cpt + 1
est ce normal que fournnisseur I A et I B n('est pas de de colonnes "indirect ?
si oui le + simple serait d'insérer 4 colonnes avant BS et BX et de les masquer pour garder le pas de 9 (step 9 dans la macro)
tu dis...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
4 mai 2016 à 14:29
4 mai 2016 à 14:29
ce serait pas plutôt <>0 ??
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
4 mai 2016 à 14:40
4 mai 2016 à 14:40
Oui !!! excuse
j'ai fait un edit dans mon message précédent concernant les fournisseurs
je repasse tout à l'heure (dentiste)
j'ai fait un edit dans mon message précédent concernant les fournisseurs
je repasse tout à l'heure (dentiste)
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
Modifié par Ju@nita le 4/05/2016 à 15:12
Modifié par Ju@nita le 4/05/2016 à 15:12
j'ai rajouté 4 colonnes mais ça donne un résultat bizarre. Les sous-totaux ne se font pas.
je vais attendre ton retour. merci
et j'ai oublié de répondre à ton autre question. Les fournisseurs IA et IB n'ont pas de colonne indirect.
je vais attendre ton retour. merci
et j'ai oublié de répondre à ton autre question. Les fournisseurs IA et IB n'ont pas de colonne indirect.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
4 mai 2016 à 17:43
4 mai 2016 à 17:43
ouf!
Ci joint classeur modifié en ajoutant les 4 colonnes aux IA et IB
et en les masquant; sur ton classeur il y a un petit boulot pour changer leur cellule fusionnée : afficher, défusionner - refusionner; le nom fournisseur se centre lui même dans les colonnes visibles
pour tester j'ai ajouté des crédits dans 1A et 1B
http://www.cjoint.com/c/FEepQotkNpt
Ci joint classeur modifié en ajoutant les 4 colonnes aux IA et IB
et en les masquant; sur ton classeur il y a un petit boulot pour changer leur cellule fusionnée : afficher, défusionner - refusionner; le nom fournisseur se centre lui même dans les colonnes visibles
pour tester j'ai ajouté des crédits dans 1A et 1B
http://www.cjoint.com/c/FEepQotkNpt
Ju@nita
Messages postés
149
Date d'inscription
mardi 11 juin 2013
Statut
Membre
Dernière intervention
8 août 2024
4 mai 2016 à 18:00
4 mai 2016 à 18:00
merveilleux ! ça fonctionne à la perfection. T'es un génie !
merci beaucoup Michel et passe une bonne journée (malgré ta visite chez le dentiste) :)
merci beaucoup Michel et passe une bonne journée (malgré ta visite chez le dentiste) :)
Utilisateur anonyme
19 mai 2016 à 12:48
19 mai 2016 à 12:48
Bonjour Ju@nita,
Désolé de t'avoir fait « faux bond », et de n'avoir pas répondu à ton
message 3. J'ai été tellement débordé ces temps-ci que je n'ai pas
pu revoir ton exercice avant aujourd'hui.
Même si tu as reçu une très bonne solution, et même si tu as clôturé
le sujet, j'ai beaucoup d'informations très intéressantes pour toi,
à commencer par la réponse à une question que tu te posais tout à
fait légitimement :
Dans ton message initial (le tout premier), tu as écris à propos de
ta propre macro : « J'ai pas compris pourquoi ça n'a pas fonctionné. » ;
et dans ton message 3, tu as écris : « Mais j'ai toujours pas compris
pourquoi ma macro ne s'exécutait pas comme il faut. ».
Si ça t'intéresse toujours, cliques sur mon pseudo, et sur mon profil,
cliques sur le bouton bleu « Lui écrire un message ».
Cela parce que j'aurai aussi besoin de te poser une question
d'ordre privé. Je t'enverrai alors un Message Privé, et pour
pouvoir le lire, tu devras cliquer sur la petite enveloppe qui
est tout en haut de ton écran, à droite de ton pseudo.
Pour t'avertir que tu as reçu un MP, cette enveloppe clignote avec
un chiffre blanc sur fond rouge : c'est le nombre de nouveaux MP
que tu as reçu (et pas encore lu).
J'aurai encore beaucoup d'autres informations pour toi,
dont la technique de la « balance ».
Cordialement. 😊
Désolé de t'avoir fait « faux bond », et de n'avoir pas répondu à ton
message 3. J'ai été tellement débordé ces temps-ci que je n'ai pas
pu revoir ton exercice avant aujourd'hui.
Même si tu as reçu une très bonne solution, et même si tu as clôturé
le sujet, j'ai beaucoup d'informations très intéressantes pour toi,
à commencer par la réponse à une question que tu te posais tout à
fait légitimement :
Dans ton message initial (le tout premier), tu as écris à propos de
ta propre macro : « J'ai pas compris pourquoi ça n'a pas fonctionné. » ;
et dans ton message 3, tu as écris : « Mais j'ai toujours pas compris
pourquoi ma macro ne s'exécutait pas comme il faut. ».
Si ça t'intéresse toujours, cliques sur mon pseudo, et sur mon profil,
cliques sur le bouton bleu « Lui écrire un message ».
Cela parce que j'aurai aussi besoin de te poser une question
d'ordre privé. Je t'enverrai alors un Message Privé, et pour
pouvoir le lire, tu devras cliquer sur la petite enveloppe qui
est tout en haut de ton écran, à droite de ton pseudo.
Pour t'avertir que tu as reçu un MP, cette enveloppe clignote avec
un chiffre blanc sur fond rouge : c'est le nombre de nouveaux MP
que tu as reçu (et pas encore lu).
J'aurai encore beaucoup d'autres informations pour toi,
dont la technique de la « balance ».
Cordialement. 😊