rapidité du programme, facilité utilisateur lambda

gopo

XLDnaute Junior
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:D
 

tototiti2008

XLDnaute Barbatruc
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...
 

gopo

XLDnaute Junior
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" !:D 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 .
 

tototiti2008

XLDnaute Barbatruc
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...
 

gopo

XLDnaute Junior
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.
 

gopo

XLDnaute Junior
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.
 

gopo

XLDnaute Junior
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 :p ) 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 !! :D

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
 

gopo

XLDnaute Junior
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.
 

tototiti2008

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
3
Affichages
243
Compte Supprimé 979
C
Réponses
93
Affichages
2 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 611
Messages
2 090 226
Membres
104 452
dernier inscrit
hamzamounir