rapidité du programme, facilité utilisateur lambda

  • Initiateur de la discussion Initiateur de la discussion gopo
  • Date de début Date de début

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 !

G

gopo

Guest
Re, ou Bonjour a vous !

Voilà Je cherche a tester plusieur chose pour comparer la rapidité de mon programme, et qu'il soit plus efficasse pour un utilisateur lambda.

Programme qui met a jour 200 cellule / mois.
J'ai plusieur solution, a vous de me conseiller ( de la facilité a la complicité ) :

1) j'effectue une Mise à Jour à l'année des l'ouverture en executant la maccro CTRL+X ( lent car il met a jour 200cellule * mois )

2) je créer un UserForm( que je ne sais pas faire ) en y mettant Janvier / Février / Mars etc... pour faire une mise a jour au mois

3) je fait une maccro qui verifie si dans une cellule de base ( ou il y aura quelque chose obligatoirement si le mois a été mis a jour ) il y a quelque chose, et s'il y a quelque chose ca ne fait pas la mise a jour s'il n'y a rien bah ca la fait ! ( utilité : rapide ! et facil pour l'exterieur juste a lancé une macro )

A vous de me dire la plus efficasse je pense opté pour la 3)...

Sinon, mon code est trop long donc je ne peux pas tout mettre dans une maccro, donc je pensait appeller les fonctions dans ma fonction : est ce -> call(fonction) ??

Cordialement !

ps : je rentre chez moi je testerai demain merci a vous !

tititoto je t'aime😀
 
Re : rapidité du programme, facilité utilisateur lambda

Rebonjour gopo,

bien, si tu as opté pour la 3ème solution, alors c'est celle que l'on t'aidera à mettre en place.
pour juger de l'efficacité, il nous faudrait au moins un bout de fichier pour se faire une idée du type de "mise à jour" que tu effectue sur 200 cellules * nombre de mois.
Pour une mise à jour simple, celà pourrait être trés rapide, même sur 2400 cellules

et puis :
Sinon, mon code est trop long donc je ne peux pas tout mettre dans une maccro, donc je pensait appeller les fonctions dans ma fonction : est ce -> call(fonction) ??

comment un code peut-il être trop long ? je n'ai jamais vu quelqu'un atteindre une limite quelconque.
Maintenant, il peut être évidement intéressant de séparer son code en Sub ou Function distinctes pour chaque traitement, ne serait-ce que pour améliorer la lisibilité.

Pour appeler une Sub :

Call MaSub
ou simplement
MaSub

Pour les fonctions (Function) c'est un peu différent, il faut utiliser le résultat de la fonction...

j'ai bien peur qu'étant donné ce que tu nous fournit comme information, tu n'ai pas grand chose à tester demain...
 
Re : rapidité du programme, facilité utilisateur lambda

Bonjour a vous,

J'espere que vous avez bien dormit !

Est il possible d'uploadé un code ? pour que tu y jettes un coup d'oeil ?

Sisi mon code est bien tres long ! "erreur de compil; procédure trop grande" !😀 j'en suis sur que si vous jetiez un coup d'oeil vous pourriez enlever 1/4 des lignes répétitive ...

Bonne journée ! et aux plaisir encore de me faire aider .
 
Re : rapidité du programme, facilité utilisateur lambda

Bonjour gopo,

tu peux toujours poster ton code... je ne sais pas si j'aurais beaucoup de temps pour le décortiquer, donc avec quelques explications, ce serait sans doute mieux.
si c'est vraiment trop long, poste par petits bouts...
 
Re : rapidité du programme, facilité utilisateur lambda

Re,

est ce que :
If .Cells(7, 9) = "" then
mon_programme
End If
Marcherai ? Il faudrait que je fasse un If sur seulement une feuille du classeur de destination, donc indiqué quel classeur, quel feuille puis la cellule.

ps : j'ai utiliser la fonction call, mon programme marche niquel, manque plus qu'a y mettre une condition avant chaque call, pour savoir s'il copie colle mes cellule si cela n'a pas était fait avant.

ps² : dans mon programme , une fonction = un mois, donc un call = 1 mois

Au plaisir.
 
Re : rapidité du programme, facilité utilisateur lambda

Salut Tototiti,

Désolé de répondre que aujourd'hui, j'était en déplacement toute la journée d'hier.

Comment dit on de travailler sur tel ou tel classeur ou tel ou tel feuille.

Code:
Set Dest = Workbooks("TBM ACP.xls")
                        With Dest.Sheets("PARIS BERCY")
If .Cells(7, 7) = "" Then

[I]Mon code[/I]

End If
End With

est ce correct ?

Bonne journée.
 
Re : rapidité du programme, facilité utilisateur lambda

J'ai un soucis, ca marche tres bien ce que j'avais fait mais suite a une décision ( hé oui je décide 😛 ) je voudrais que mon dossier TBM ACP SRC devienne le fichier que j'ouvre et que TBM ACP devienne le classeur actif donc celui que j'ouvre a la base, ( la maccro se trouvera dessus ).
Car avant c'était l'inverse j'ouvrait TBM ACP APC puis ma maccro ouvrai TBM ACP.

Voici mon code, cela ne marche pas ca ne vas même pas dans mon 1er If .. mais ca m'ouvre le fichier !! 😀

Code:
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 09/10/2008 par IDCO1
'
' Touche de raccourci du clavier: Ctrl+Maj+W
'
Dim Variable1 As String
Dim Variable2 As Single
Dim Variable3 As String
Dim Variable4 As String
Dim Variable5 As String
Dim Variable6 As String
Dim Variable7 As String
Dim Variable8 As String

Dim x As Single
Dim i As Integer
Dim j As Integer
Dim h As Integer

       
        With ThisWorkbook.Sheets("Paris Keller")
                          If Cells(9, 7) = "" Then
                          Workbooks.Open (ActiveWorkbook.Path & "\TBM ACP SRC.xls")
        i = 9
        For i = 9 To 846 Step 27
          If Cells(i, 2) = "753220 - PARIS KELLER ACP" Then
       MsgBox "1er If"
                For j = 5 To 26 Step 1
                    
                       If .Cells(i + 1, j) = "Janvier" Then
                          MsgBox "2eme If "
                              Set Dest = Workbooks("TBM ACP SRC.xls")
                         With Dest.Sheets("Détail ACP")
                     
                                    Variable1 = .Cells(i + 8, j).Value
                                    Variable2 = .Cells(i + 12, j).Value
                                    Variable3 = .Cells(i + 11, j).Text
                                    Variable4 = .Cells(i + 3, j).Text
                                    Variable5 = .Cells(i + 14, j).Text
                                    Variable6 = .Cells(i + 15, j).Text
                                    Variable7 = .Cells(i + 5, j).Text
                                     Variable8 = .Cells(i + 6, j).Text
                                End With
                        
                         With ThisWorkbook.Sheets("Paris Keller")
                              .Cells(9, 7).Value = Variable1
                              x = (Variable2 * .Cells(9, 7).Value) / .Cells(5, 7).Value
                              .Cells(13, 7).Value = x

                              .Cells(30, 7).Value = Variable3
                              .Cells(40, 7).Value = Variable4
                              .Cells(42, 7).Value = Variable5
                              .Cells(43, 7).Value = Variable6
                              .Cells(45, 7).Value = Variable7
                              .Cells(47, 7).Value = Variable8
                         End With
                 Exit For
          End If
        Next
      Exit For
    End If
  Next
  End If
  End With
 End Sub

Bonne journée
 
Re : rapidité du programme, facilité utilisateur lambda

Cela marche, mais ne vas pas dans mon If ... :s je pense que c'est un probleme de destination , source, actif, non actif...

TBM ACP SRC = fichier ouvert grâce au code, où les cellule seron copié.
TBM ACP = fichier ouvert manuellement où la macro sera lancé, c'est ici ou seron copié les cellules.
 
Re : rapidité du programme, facilité utilisateur lambda

Alors mon ami ? RAS ?

ca ne veut pas rentrer dans mon IF ! :'( ca End if et End sub ... je doit avir un souci pour dire sur quel classeur & feuille travaillé ..

ZouBi !
 
Re : rapidité du programme, facilité utilisateur lambda

quand tu mets "Cells" dans ton code, tu veux dire les cellules de quel classeur et de quelle feuille ?
je rappelle que je n'ai rien sous les yeux et que ma boule de cristal est cassée, alors pas trop facile de trouver "Pourquoi il rentre pas dans ton If"

exemple :
If Cells(9, 7) = "" Then
If Cells(i, 2) = "753220 - PARIS KELLER ACP" Then
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
793
Retour