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 :

Erreur 9 sous Excel en VB (type de fichier .xltm)


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Par défaut Erreur 9 sous Excel en VB (type de fichier .xltm)
    Bonjour!
    je cherche à remplir un tableau à partir d'un classeur.

    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
    'déclaration de mes variables
    Dim MonTableau As Variant, cpt2 As Long, cpt1 As Long
    Dim MonTableau1 As Variant
    Dim MonTableaux_Final(10000) As Variant
    'initialisation de mes tableaux
    MonTableau1 = Sheets("Feuil2").Range("A8 : I47").Value
    MonTableau = Range("A2 : B203").Value
    
    'cpt1 = 1
    Dim index_F As Integer
    index_F = 0
    
    '**** parcour mon tableau à la dimension "1" du plus petit au plus grand indice ****
    For cpt2 = LBound(MonTableau, 1) To UBound(MonTableau, 1)
    
    
    
    '*** si les deux cellules sont égale alors j'ajoute 1 à mon index ***
    If Range("A" & cpt2).Value = Range("B" & cpt2).Value Then
    index_F = index_F + 1
    End If
    
    '*** en fonction de l'indice je mets mon faisceau dans un des tableaux ***
    Select Case index_F
    Case Is = 1
    For cpt1 = LBound(MonTableau1, 1) To UBound(MonTableau1, 1)
    
    MonTableau1(2, cpt1) = MonTableau(1, cpt2)
    
    
    Next
    
    
    End Select
    
    
    Next
        
    End Sub
    quand j'envois le code il m'indique le code erreur 9 .. et m'indique cette ligne.
    merci à tout ceux qui y réfléchissent!!!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par EpicFail2 Voir le message
    Bonjour,

    Essayez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonTableau1(cpt1,2) = MonTableau(cpt2,1)
    Vous avez choisi de faire une boucle sur la première dimension des deux matrices ex : For cpt1 = LBound(MonTableau1, 1) To UBound(MonTableau1, 1). Il faut donc que les variables cpt1 et cpt2 soient au bon endroit.


  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je commence, pour y voir clair à mettre ce code entre balises code (présenter ainsi son code n'est pas du "luxe", mais une nécessité) -->>
    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
    Dim MonTableau As Variant, cpt2 As Long, cpt1 As Long
      Dim MonTableau1 As Variant
      Dim MonTableaux_Final(10000) As Variant
      'initialisation de mes tableaux
      MonTableau1 = Sheets("Feuil2").Range("A8 : I47").Value
      MonTableau = Range("A2 : B203").Value
      'cpt1 = 1
      Dim index_F As Integer
      index_F = 0
      '**** parcour mon tableau à la dimension "1" du plus petit au plus grand indice ****
      For cpt2 = LBound(MonTableau, 1) To UBound(MonTableau, 1)
        '*** si les deux cellules sont égale alors j'ajoute 1 à mon index ***
        If Range("A" & cpt2).Value = Range("B" & cpt2).Value Then
          index_F = index_F + 1
        End If
        '*** en fonction de l'indice je mets mon faisceau dans un des tableaux ***
        Select Case index_F
          Case Is = 1
             For cpt1 = LBound(MonTableau1, 1) To UBound(MonTableau1, 1)
               MonTableau1(2, cpt1) = MonTableau(1, cpt2)
             Next
        End Select
      Next
    End Sub
    Ah ... J'y vois plus clair (en lecture), mais beaucoup moins clair (en compréhension des aboutissants).
    Mais tenons-nous-en à la cause de l'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonTableau1(2, cpt1) = MonTableau(1, cpt2)
    sera forcément en erreur dès que cpt1 sera > 9 (puisque Montableau1 n'a que 9 colonnes). On aura également une erreur dès que cpt2 sera > 2 (puisque Montableau n'a que 2 colonnes)
    Eric KERGRESSE, que je salue, a donc totalement raison de signaler l'erreur d'inversion qu'il corrige ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonTableau1(cpt1,2) = MonTableau(cpt2,1)
    Une telle correction supprimera (c'est certain) l'erreur technique dénoncée (erreur 9).
    Mais alors : A la 1ère égalité trouvée dans la 1ère boucle (entre colonnes A et B) :
    --- on modifie ainsi la totalité de la deuxième colonne du tableau MonTableau1 (puisque la boucle cpt1 concerne tout le tableau).
    Tout cela me parait très étrange, mais bon ... dans l'ignorance des tenants et aboutissants, ma foi, je me contente de le signaler.

  4. #4
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Par défaut Merci!
    Je vous remercie tout les deux, pour le temps que vous avez passé!
    C'était une faute bête
    C'était mon premier poste .. Je ferai plus attention à la présentation de mes programmes si j'ai besoin d'un coup de main ^^
    Je suis sur un sujet compliqué et j'en suis qu'au début ..

    Merci encore !! problème résolu

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

Discussions similaires

  1. Erreur automation sous excel pour ouvrir Word
    Par Philippe53 dans le forum VBA Word
    Réponses: 6
    Dernier message: 21/06/2008, 23h52
  2. Erreur fatale au lancement d'une UserForm sous Excel 2003
    Par Le POlonais dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 27/11/2007, 18h03
  3. message erreur userform sous excel
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/08/2007, 22h11
  4. Erreur Automation sous Excel (SaveCopyAs)
    Par jeanvoil dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/03/2007, 12h05
  5. Erreur conversion de type - import fichier excel
    Par Greg84 dans le forum Access
    Réponses: 2
    Dernier message: 16/08/2006, 17h32

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