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 :

plantage d'excel sur macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut plantage d'excel sur macro
    bonjour a tous

    hier j'avais un code erreur "erreur d'éxécution '-214747848(80010108)'"

    sur les conseils donnée sur le forum, j'ai référé directement aux cellules à modifier

    mais maintenant je trois bug aléatoire :
    soit j'ai le message d'erreur ci-dessus
    soit j'ai : excel ne peut pas terminer cette tâche avec les ressources disponibles. Sélectionnez moins de données ou fermez des applications
    soit il plante en ne répondant plus


    le code maintenant est


    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
     
    Private Sub UserForm_Initialize()
    ' activez les sources de menu déroulant
    Sheets("tarif").Select
    Range("d1:g9").Select
    Selection.ClearContents
    c12ref1.RowSource = "tarif!a1:n" & Range("tarif!a65536").End(xlUp).Row
    c12ref2.RowSource = "tarif!a1:n" & Range("tarif!a65536").End(xlUp).Row
    c12ref3.RowSource = "tarif!a1:n" & Range("tarif!a65536").End(xlUp).Row
    c12ref4.RowSource = "tarif!a1:n" & Range("tarif!a65536").End(xlUp).Row
     
    End Sub
                             'EVENEMENT POUR CHAQUE SELECTION DE REF
    Private Sub c12ref1_Change()
    Dim rech1 As String
    Sheets("tarif").Activate
    rech1 = c12ref1.Value
    Range("e1").Value = rech1
    Cells.Find(What:=rech1, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
            , SearchFormat:=False).Activate
    Range("f1").Value = ActiveCell.Offset(0, 1).Value
    c12p1.Value = ActiveCell.Offset(0, 1).Value
     
      ' evenement sur changement quantité
    Private Sub q1_Change()
    Range("g1").Value = Val(q1)
    t1.Value = Range("h1").Value
    End Sub
    j'ai 4 lignes de box comportant : reférence-prix unitaire-quantité-total

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    Quelque remarque sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Cells.Find(What:=rech1, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
            , SearchFormat:=False).Activate
    Tu cherche sur toutes les ceulles de ta feuille.
    Tu ne voudrais pas essayer de te limiter une plage ou se touvre les valeur
    remplace cells par Range("Taplage") cela devrais consommer beacoup moins de ressource

    Tu trouvera ici tout ce dont tu devrais avoir besoin pour trouver ta dernière ligne et dernière colonne de ta plage

    Tu utilise after:= ActiveCell, quel est ta cellule active? tu es certain que c'est ce que tu veux?
    Regarde l'aide sur la fonction find et enlève toutes les infos facultatives dont tu n'a pas besoin
    Je pense même que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("Taplage").Find(rech1)
    devrais suffire

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Un autre pb que j'ai noté : Si rech1 n'est pas trouvé, ton code suivant s'exécute tout de même... c'est pas bien même s'il doit toujours être trouvé
    Tu peux pallier cet inconvénient en suivant les conseils de Krovax adaptés comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Plage as range, c as range
         Set Plage = Worksheets("Feuil1").UsedRange
         With Plage
              Set c = .find(What:=rech1, LookAt:=xlPart)
              If not c is nothing then
                     Range("f1").Value = c.Offset(0, 1).Value
                     c12p1.Value = c.Offset(0, 1).Value
              endif
         end with
    Tu dis

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA] Excel Récuperer Macro sur fichier corrompu
    Par Phenx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/01/2009, 13h13
  2. Plantage Excel "sur changement"
    Par palmi38 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/11/2007, 17h18
  3. {VBA Excel}Probleme sur macro mauvaise lecture de feuille excel
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2007, 15h38
  4. Probleme d'enregistrement sur Macro/VBA de Excel
    Par life is magic dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/11/2005, 17h23
  5. probleme de selection aleatoire sur excel avec macro vba
    Par guillaume sors dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/10/2005, 10h51

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