IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Excel se ferme à l'éxécution de la macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 41
    Par défaut Excel se ferme à l'éxécution de la macro
    bonjour le forum
    j'ai un code vba qui ferme excel lorsque je l'éxécute.Par contre si je réduit la recherche à 4 numéros il fonctionne mais est trés long a son éxécution.
    D'ou cela vient-il qu'il se ferme et y a t-il moyen de l'accélérer.voici le code.
    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Sub Combinaison()
    Dim I As Long, K As Long, M As Long, N As Long, O As Long
    Dim NbMax As Long
    Dim Tablo(1 To 70, 1 To 70, 1 To 70, 1 To 70, 1 To 70) As Long
    Dim J As Long
    Dim Resultat(1 To 1, 1 To 6)
    Dim Tbl1
    Dim Nombre As Long
     
      Application.ScreenUpdating = False
      Tbl1 = Range("BdD")
      NbMax = UBound(Tbl1, 2)
     
      For J = 1 To UBound(Tbl1)
        For I = 1 To NbMax - 4
          For K = I + 1 To NbMax - 3
            For M = K + 1 To NbMax - 2
              For N = M + 1 To NbMax - 1
                For O = N + 1 To NbMax
            Tablo(Tbl1(J, I), Tbl1(J, K), Tbl1(J, M), Tbl1(J, N), Tbl1(J, O)) = Tablo(Tbl1(J, I), Tbl1(J, K), Tbl1(J, M), Tbl1(J, N), Tbl1(J, O)) + 1
                Next O
              Next N
            Next M
          Next K
        Next I
      Next J
     
      For Nombre = 1 To 70
      Resultat(1, 6) = 0
        For I = 1 To 70
          For K = 1 To 70
            For M = 1 To 70
              For N = 1 To 70
                For O = 1 To 70
              If I = Nombre Or K = Nombre Or M = Nombre Or N = Nombre Or O = Nombre Then
                If Tablo(I, K, M, N, O) > Resultat(1, 6) Then
                  Resultat(1, 1) = I
                  Resultat(1, 2) = K
                  Resultat(1, 3) = M
                  Resultat(1, 4) = N
                  Resultat(1, 5) = O
                  Resultat(1, 6) = Tablo(I, K, M, N, O)
                  End If
                End If
                Next O
              Next N
            Next M
          Next K
        Next I
        Cells(1 + Nombre, "X").Resize(1, 6) = Resultat
      Next Nombre
    End Sub

  2. #2
    Membre éclairé Avatar de verredewhisky
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Janvier 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Janvier 2013
    Messages : 63
    Par défaut
    En général ce qui prend du temps c'est l'utilisation répétée d'objet excel ou des variables mal définies. Enfin c'est ce que je crois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub Combinaison()
    ...
    Dim Resultat(1 To 1, 1 To 6) as Long
    Dim Tbl1  'C'est quoi comme variable ?
    ...
      Tbl1 = Range("BdD") 
     
    ... 
      For J = 1 To UBound(Tbl1)
    ...
        Cells(1 + Nombre, "X").Resize(1, 6) = Resultat 'faut peut être le sortir de la boucle en faisant un tableau et ensuite l'insérer dans les cellules
      Next Nombre
    End Sub
    p.s. tu connais matlab ? C'est un très bon programme pour les opérations matricielles.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 41
    Par défaut excel se ferme à l'éxécution de la macro
    bonjour verredewhisky,le forum
    merci pour ta réponse mais je ne peut pas te dire a quoi sert telle ou telle variable ne connaissant pas grand chose au vba.Quand a matlab n'étant pas doué en vba je ne sait s'il me sera utile,je vais quand meme y jeter un oeil.
    je met un fichier joint
    merci
    ps:j'ai le message fichier non valide pourtant c'est un fichier xlms et il ne fait que 50 Ko

Discussions similaires

  1. [Excel] Changer de profil lors de l'éxécution d'une macro
    Par TeetyTweety dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/02/2007, 08h35
  2. Macro excel qui ferme tous les fichiers .xls
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/01/2006, 20h21
  3. Excel : Demander une date puis lancer une macro
    Par repié dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/12/2005, 16h55
  4. [Excel] Utiliser une application externe par une macro
    Par thierry2.dlp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2005, 22h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo