Macro excel : optimisation de code et création
Fermé
james405
Messages postés
154
Date d'inscription
mercredi 27 janvier 2010
Statut
Membre
Dernière intervention
10 juin 2014
-
24 mai 2014 à 16:52
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 10 juin 2014 à 08:14
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 10 juin 2014 à 08:14
Bonjour,
J'ai commencé un projet sous VBA que j'ai bientôt terminé. Pour autant, j'ai besoin d'optimiser certains bouts de codes.
J'aurais besoin de qqn qui pourrait m'aider et que je pourrais contacter par téléphone pour lui expliquer et répondre aux questions en direct. Je pense qu'il y en a pour une ou deux heures. Je ne peux pas mettre le fichier en ligne car c'est un peu confidentiel.
Donc voila si quelqu'un s'y connait bien en macro et à un peu de temps à me consacrer je suis preneur. (bien sur une contrepartie pourra être fournie.
J'ai commencé un projet sous VBA que j'ai bientôt terminé. Pour autant, j'ai besoin d'optimiser certains bouts de codes.
J'aurais besoin de qqn qui pourrait m'aider et que je pourrais contacter par téléphone pour lui expliquer et répondre aux questions en direct. Je pense qu'il y en a pour une ou deux heures. Je ne peux pas mettre le fichier en ligne car c'est un peu confidentiel.
Donc voila si quelqu'un s'y connait bien en macro et à un peu de temps à me consacrer je suis preneur. (bien sur une contrepartie pourra être fournie.
A voir également:
- Macro excel : optimisation de code et création
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
42 réponses
skk201
Messages postés
942
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
54
Modifié par skk201 le 28/05/2014 à 11:24
Modifié par skk201 le 28/05/2014 à 11:24
Apparement personne ne veut te faire des coups de fil.
Un suivi par message privé serait pas suffisent à ton avis ?
Un suivi par message privé serait pas suffisent à ton avis ?
Chris 94
Messages postés
50978
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
17 février 2023
7 339
28 mai 2014 à 11:08
28 mai 2014 à 11:08
Bonjour,
CCM est un forum où on expose publiquement ses problèmes pour obtenir
CCM est un forum où on expose publiquement ses problèmes pour obtenir
une assistance publique, visible de tous et gratuite
.
skk201
Messages postés
942
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
54
28 mai 2014 à 11:25
28 mai 2014 à 11:25
HS // Actuellement dans la charte :
"Les propositions d'aide par messagerie privée ou en prise de contrôle à distance ne sont pas permises sur le forum et les intervenants verront leurs messages supprimés. Exception faite des intervenants certifiés ccm dans le cadre d'un suivi de dossier et de besoin de numéro confidentiel ; le reste de la discussion devant se poursuivre sur le forum."
On parle ni du fait que l'assistance est gratuite, ni qu'elle est visible de tous :)
"Les propositions d'aide par messagerie privée ou en prise de contrôle à distance ne sont pas permises sur le forum et les intervenants verront leurs messages supprimés. Exception faite des intervenants certifiés ccm dans le cadre d'un suivi de dossier et de besoin de numéro confidentiel ; le reste de la discussion devant se poursuivre sur le forum."
On parle ni du fait que l'assistance est gratuite, ni qu'elle est visible de tous :)
Chris 94
Messages postés
50978
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
17 février 2023
7 339
Modifié par Chris 94 le 28/05/2014 à 12:06
Modifié par Chris 94 le 28/05/2014 à 12:06
Comme tu dis :
Ce n'est donc pas HS, ni ta proposition (mail) avant ta correction de 11 h 24, ni celle d'après ne sont conformes à la charte.
Merci de ne pas insister sur cette vois glissante.
Les propositions d'aide par messagerie privée ou en prise de contrôle à distance ne sont pas permises sur le forum...D"ailleurs tu notes aussi, plus exactement tu copies à la suite :
...les intervenants verront leurs messages supprimés.
Ce n'est donc pas HS, ni ta proposition (mail) avant ta correction de 11 h 24, ni celle d'après ne sont conformes à la charte.
Merci de ne pas insister sur cette vois glissante.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
skk201
Messages postés
942
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
54
28 mai 2014 à 12:00
28 mai 2014 à 12:00
Oui par mail je pensait message privé :)
Mais per message privé c'est pas interdit ? Je pense que par messagerie privé ça sous-entend plutôt MSN, facebook, etc. ?
Mais per message privé c'est pas interdit ? Je pense que par messagerie privé ça sous-entend plutôt MSN, facebook, etc. ?
Chris 94
Messages postés
50978
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
17 février 2023
7 339
28 mai 2014 à 12:06
28 mai 2014 à 12:06
Dernière explication :
Toute proposition d'aide privée que ce soit par MP sur CCM, par mail, par téléphone, par WLM, FB, Twitter ou avec des tam-tams est prohibée. Le but de CCM est de mettre l'aide à la disposition du plus grand nombre.
Toute proposition d'aide privée que ce soit par MP sur CCM, par mail, par téléphone, par WLM, FB, Twitter ou avec des tam-tams est prohibée. Le but de CCM est de mettre l'aide à la disposition du plus grand nombre.
skk201
Messages postés
942
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
54
28 mai 2014 à 13:24
28 mai 2014 à 13:24
Alors James405 est-ce que tu peux nous donner plus d'information par rapport é ton code ?
A ton avis qu'est-ce qui n'est pas optimal ?
A ton avis qu'est-ce qui n'est pas optimal ?
james405
Messages postés
154
Date d'inscription
mercredi 27 janvier 2010
Statut
Membre
Dernière intervention
10 juin 2014
28 mai 2014 à 21:16
28 mai 2014 à 21:16
Ok dsl ... Je vais mettre de demain un fichier bien modifier pour ne pas avoir d'info confidentielle dedans ...
J'ai 5 soucis de code et je vais commencer par le premier qui est d'optimiser le bout de code du commande bouton 2 qui fait une quadruple boucle sur des tableaux de données pré enregistrée ... La macro met 30 secondes a s'exécuter et c'est vraiment trop ... Je met le fichier en ligne tard ce soir ou demain ... Désole je ne pensais pas enfreindre les règles ...
J'ai 5 soucis de code et je vais commencer par le premier qui est d'optimiser le bout de code du commande bouton 2 qui fait une quadruple boucle sur des tableaux de données pré enregistrée ... La macro met 30 secondes a s'exécuter et c'est vraiment trop ... Je met le fichier en ligne tard ce soir ou demain ... Désole je ne pensais pas enfreindre les règles ...
james405
Messages postés
154
Date d'inscription
mercredi 27 janvier 2010
Statut
Membre
Dernière intervention
10 juin 2014
28 mai 2014 à 21:39
28 mai 2014 à 21:39
Bon je le fais maintenant du coup !! :)
Pour expliquer le principe de l'outil assez rapidement :
C'est un outil qui permet de faire des budget et planning de travaux. quand on arrive sur l'outil, on saisit les informations du chantier. Ensuite on saisit des taches comme terrassement remblais... Quand je saisis une tache j'y affecte des ressources !! Ensuite je fais la même chose pour chaque tâche.. Ce n'est pas très clair mais vous comprendrez en regardant l'exemple mis dans l'outil. Pour tester la lenteur de la macro il suffit de charger l'exemple (pour cela clic sur recherche, puis chantier test puis charger puis edition :) ) c'est cette macro qui prend bcp trop de temps a mon gout !
https://www.cjoint.com/?DECvJJSkd47
Bon n'hesitez pas si vous avez des questions je serai très réactif, (et vous en aurez je pense). le code est assez basique mais si je peux faciliter la compréhension ...
Voila le fautif !!!
For lig = 6 To 216 'On boucle sur toutes les lignes de la feuille BudgetPlan
'On boucle sur toutes les colonnes de la feuille BudgetPlan
For Col = 8 To drcol
'on remet la quantité à 0
qtte = 0
'On boucle sur toutes les lignes de la feuille "plan" (même nbre de colonne que BudgetPlan)
For j = 6 To 216
'Si la cellule est colorée alors
If .Cells(j, Col).Interior.ColorIndex = 15 Then
'on boucle sur notre tableau de données
For i = LBound(TblDonnees, 2) To UBound(TblDonnees, 2)
'si on trouve la tache et la désignation dans la même ligne du tableau, on ajoute la quantité
If TblDonnees(1, i) = Feuil10.Cells(j, 2) And TblDonnees(4, i) = Feuil10.Cells(lig, 2) Then qtte = qtte + CInt(TblDonnees(5, i))
Next i
End If
Next j
.Cells(lig, Col) = qtte
If fourn = True Then Exit For
Next Col
Next
Merci pour votre aide :)
Pour expliquer le principe de l'outil assez rapidement :
C'est un outil qui permet de faire des budget et planning de travaux. quand on arrive sur l'outil, on saisit les informations du chantier. Ensuite on saisit des taches comme terrassement remblais... Quand je saisis une tache j'y affecte des ressources !! Ensuite je fais la même chose pour chaque tâche.. Ce n'est pas très clair mais vous comprendrez en regardant l'exemple mis dans l'outil. Pour tester la lenteur de la macro il suffit de charger l'exemple (pour cela clic sur recherche, puis chantier test puis charger puis edition :) ) c'est cette macro qui prend bcp trop de temps a mon gout !
https://www.cjoint.com/?DECvJJSkd47
Bon n'hesitez pas si vous avez des questions je serai très réactif, (et vous en aurez je pense). le code est assez basique mais si je peux faciliter la compréhension ...
Voila le fautif !!!
For lig = 6 To 216 'On boucle sur toutes les lignes de la feuille BudgetPlan
'On boucle sur toutes les colonnes de la feuille BudgetPlan
For Col = 8 To drcol
'on remet la quantité à 0
qtte = 0
'On boucle sur toutes les lignes de la feuille "plan" (même nbre de colonne que BudgetPlan)
For j = 6 To 216
'Si la cellule est colorée alors
If .Cells(j, Col).Interior.ColorIndex = 15 Then
'on boucle sur notre tableau de données
For i = LBound(TblDonnees, 2) To UBound(TblDonnees, 2)
'si on trouve la tache et la désignation dans la même ligne du tableau, on ajoute la quantité
If TblDonnees(1, i) = Feuil10.Cells(j, 2) And TblDonnees(4, i) = Feuil10.Cells(lig, 2) Then qtte = qtte + CInt(TblDonnees(5, i))
Next i
End If
Next j
.Cells(lig, Col) = qtte
If fourn = True Then Exit For
Next Col
Next
Merci pour votre aide :)
Bonjour
Ses jolie mes on peut rien voir car il manque le mot de passe
Et on ne peut rien voir
A+
Maurice
Ses jolie mes on peut rien voir car il manque le mot de passe
Et on ne peut rien voir
A+
Maurice
Chris 94
Messages postés
50978
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
17 février 2023
7 339
29 mai 2014 à 10:38
29 mai 2014 à 10:38
Bonjour,
Hein ? Comment ? Qu'est-ce que tu ne vois pas ?
Hein ? Comment ? Qu'est-ce que tu ne vois pas ?
james405
Messages postés
154
Date d'inscription
mercredi 27 janvier 2010
Statut
Membre
Dernière intervention
10 juin 2014
29 mai 2014 à 10:38
29 mai 2014 à 10:38
admin le mot de passe.
re
la feuille "BudgetPlan" est vide
la feuille "plan" est vide
il manque par mal de chose dans la macro HI
A+
Maurice
la feuille "BudgetPlan" est vide
la feuille "plan" est vide
il manque par mal de chose dans la macro HI
A+
Maurice
james405
Messages postés
154
Date d'inscription
mercredi 27 janvier 2010
Statut
Membre
Dernière intervention
10 juin 2014
29 mai 2014 à 12:44
29 mai 2014 à 12:44
Oui les deux feuilles sont vides j'ai peur de les supprimer elles me servaient au départ mais plus maintenant .. Pour la macro tout y es ... Pk dis tu qu'il en manque ?
re
Sub TestOnglet()
'Plein de correction a faire
'With Sheets(3) 'Feuille "plan" pas bon
'car si on deplace Onglet ca ne marche plus ou si on change le nom de l'onglet
'Mettre With Sheets(Feuil3.Name) ou With Feuil3
' en gros il faut tous revoir
With Feuil3
.Select
.Unprotect "admin"
.Range("A2:BZ" & Rows.Count).Clear
.Cells.Interior.ColorIndex = xlNone
.Protect "admin", True, True, True, True, True, True
End With
End Sub
A+
Maurice
Sub TestOnglet()
'Plein de correction a faire
'With Sheets(3) 'Feuille "plan" pas bon
'car si on deplace Onglet ca ne marche plus ou si on change le nom de l'onglet
'Mettre With Sheets(Feuil3.Name) ou With Feuil3
' en gros il faut tous revoir
With Feuil3
.Select
.Unprotect "admin"
.Range("A2:BZ" & Rows.Count).Clear
.Cells.Interior.ColorIndex = xlNone
.Protect "admin", True, True, True, True, True, True
End With
End Sub
A+
Maurice
james405
Messages postés
154
Date d'inscription
mercredi 27 janvier 2010
Statut
Membre
Dernière intervention
10 juin 2014
29 mai 2014 à 14:00
29 mai 2014 à 14:00
Merci pour ton aide maurice mais ces feuilles ne me servent plus ... L'optimisation de code dont j'ai besoin concerne la macro du commande Bouton 22 de l'user form 1...
james405
Messages postés
154
Date d'inscription
mercredi 27 janvier 2010
Statut
Membre
Dernière intervention
10 juin 2014
29 mai 2014 à 19:28
29 mai 2014 à 19:28
command bouton 2...
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 717
30 mai 2014 à 19:00
30 mai 2014 à 19:00
Bonjour,
Ton code est foisonnant et donc ce n'est pas étonnant qu'il prenne du temps.
Dans la portion que tu vises, tu peux mettre ta feuille10 en tableau ainsi que les cellules en couleur, cela devrait améliorer.
Il faudrait des heures pour rentrer dans ta logique car même si les fonctions sont basiques, leur combinaison ne l'ai pas tellement même si pour toi c'est évident.
Pour améliorer la vitesse, il faudrait à mon avis constituer les fonctions de base par une procédure spécifique, puis les appeler à bon escient : cela s'appelle fonctionner en objet.
Voilà ma réflexion et il est très difficile d'aller modifier 2000 lignes de code écrites par un autre.
Ton code est foisonnant et donc ce n'est pas étonnant qu'il prenne du temps.
Dans la portion que tu vises, tu peux mettre ta feuille10 en tableau ainsi que les cellules en couleur, cela devrait améliorer.
Il faudrait des heures pour rentrer dans ta logique car même si les fonctions sont basiques, leur combinaison ne l'ai pas tellement même si pour toi c'est évident.
Pour améliorer la vitesse, il faudrait à mon avis constituer les fonctions de base par une procédure spécifique, puis les appeler à bon escient : cela s'appelle fonctionner en objet.
Voilà ma réflexion et il est très difficile d'aller modifier 2000 lignes de code écrites par un autre.
james405
Messages postés
154
Date d'inscription
mercredi 27 janvier 2010
Statut
Membre
Dernière intervention
10 juin 2014
30 mai 2014 à 19:03
30 mai 2014 à 19:03
Quand je le test par segment cet seulement la quadruple boucle qui prend tout le temps le reste prends deux secondes ... Les données sont stocké dans des tableaux et je boucle ces tableaux et mes cellules ... Il y a bien un petit moyen de faire mieux sur ces dix lignes de code. Le reste je gère a peu près
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 717
31 mai 2014 à 10:07
31 mai 2014 à 10:07
Bonjour james405,
la quadruple boucle qui prend tout le temps le reste prends deux secondes ...
Objection, votre honneur ce n'est pas vrai chez moi.
La boucle prend 1/3 du temps et le reste est partagé avec 1/3 avant et 1/3 après la boucle !
Si l'on diminue le temps de la boucle ce ne sera pas satisfaisant non plus.
la quadruple boucle qui prend tout le temps le reste prends deux secondes ...
Objection, votre honneur ce n'est pas vrai chez moi.
La boucle prend 1/3 du temps et le reste est partagé avec 1/3 avant et 1/3 après la boucle !
Si l'on diminue le temps de la boucle ce ne sera pas satisfaisant non plus.
james405
Messages postés
154
Date d'inscription
mercredi 27 janvier 2010
Statut
Membre
Dernière intervention
10 juin 2014
31 mai 2014 à 10:09
31 mai 2014 à 10:09
Lol le code prend cb de temp pour toi ? J'ai moi il prend 32 secondes dont 27 uniquement dans ma quadruple boucle