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 :

Comment faire un array de 119 variables?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut Comment faire un array de 119 variables?
    Bonjour,
    je suis tout débutant en VBA et j'essaye de me débrouiller en tatonnant.
    J'ai un stock de 113 formulaires WORD contenant chacun 119 champs. Je veux dépouiller tout cela pour en faire un tableau excel (puis une base mysql). J'ai trouvé un code source qui permet de faire cela sur de petits formulaires alors j'ai essayé de l'adapter à mon formulaire. Après quelques efforts, j'ai obtenu quelque chose qui fonctionne mais seulement jusqu'à 67 variables.
    Le problème semble ridiculement simple: l'éditeur VB n'accpete pas, d'après ce que j'ai compris, que la ligne d'instruction dépasse une certaine longueur; je suis donc forcé de m'arrêter après la 67e variable.
    Comment faire pour rentrer mes 119 variables?
    Je précise que j'utilise VB 1987-1996 avec Excel97 (eh oui...)

    Je vous serais très reconnaissant de m'aider.
    Merci d'avance
    cordialement
    Nicolas

    PS: ci-dessous, le code source en question:
    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
    Sub récupbiblio()
    '
    ' récupbiblio Macro
    ' Macro enregistrée le 03/10/2008 par xxx
    '
    ' Touche de raccourci du clavier: Ctrl+r
    '
    Dim Fich As Worksheet
    Set Fich = ThisWorkbook.Worksheets("Toutes_fiches")
    chemin = "C:\Documents and Settings\X300 1\Bureau\Euterpe\fiches biblio Euterpe\"
    mesfichiers = Dir(chemin & "*.doc")
    Dim Variables As Variant
    Variables = Array("datecréation","rédacteur","typedefichepoème","typedefichethéorique","typeautreprécisez","titrevolume","complémentdutitre","date","précisiondate","annéeRP","éditeur","collec","ville","numéro","format","taille","pages","pagespréface","cote","lieu","autrelieu","txt1","débuttxt1","fintxt1","texteretenu2","débuttxt2","fintxt2","texteretenu3","débuttxt3","fintxt3","autrestextesretenus","auteur","auteurprénom","pseudo","datedenaissance","lieudenaissance","datedemort","lieudemort","formation","autreformation","études","profession","autreprofession","statutauteursecond1","statutsec1précisez","autresauteurs","prénomsecondaire1","statutsec2","statutsec2préc","auteursec2nom","auteursec2prénom","statutsec3","statutsec3préc","auteursec3nom","auteursec3prénom","notes","ratio","paratexte","illust","destinataires","autreséditions","annotations","provenance","état","poèmeisoléenvers","commpoisolévers","poèmeisoléenprose","commpoisoléprose", "recueilenvers","commrecueilvers","recueilenprose","commrecueilpros
    e", "poèmevolumenevers", "commpovolvers", "poèmevolumeenprose", "commpovolprose", "textedescientifique", "commtxtdesci", "txtdevulg", "commtxtdevulg", "txtrefusé", "commtxtrefusé", "matière1", "matière2", "matière3", "matière4", "thèmes", "motsclés", "savant1", "savant2", "savant3", "savant4", "savant5", "savant6", "savant7", "savant8", "savant9", "savant10", "nbdeversprécis", "nbdeversenviron", "mètreprincipal", "mètreprincipalpréc", "autremètre1", "autremètre1préc", "autremètre2", "autremètre2préc", "autremètre3", "autremètre3préc", "structure", "commentaires", "dumême", "hypotextes", "poèmesconcurrents", "citations", "réception", "critique", "travaux", "publiable", "commpubliable")
    nb_Champs = 119
    num_row = 1
    i = 0
     
    For i = 0 To nb_Champs - 1
      Fich.Cells(num_row, i + 1) = Variables(i)
    Next i
     
    Set FichierWord = CreateObject("word.application")
    FichierWord.Visible = True
    FichierWord.DisplayAlerts = False
     
    Do While mesfichiers <> ""
      If mesfichiers <> "." And mesfichiers <> ".." And mesfichiers <> "tableau Euterpe.xls" Then
        monDocument = chemin & mesfichiers
        FichierWord.documents.Open FileName:=monDocument, ReadOnly:=True
        num_row = num_row + 1
        num_col = 1
        For i = 0 To nb_Champs - 1
          Fich.Cells(num_row, i + 1) = FichierWord.activedocument.formfields(Variables(i)).result
        Next i
        FichierWord.documents.Close (0)
      End If
      mesfichiers = Dir
    Loop
    FichierWord.Quit
     
     
    End Sub

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonsoir,

    l'éditeur VB n'accpete pas, d'après ce que j'ai compris, que la ligne d'instruction dépasse une certaine longueur;
    Tu peux ecrire ton instruction sur deux ou plusieurs lignes en utilisant le caractere _ précédé d'un espace.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Variables = Array("datecréation", "rédacteur", "typedefichepoème", _
                    "typedefichethéorique", "typeautreprécisez", "titrevolume", _
                    "complémentdutitre", "date", "précisiondate", "annéeRP") 'etc
    Cordialement,

    Tirex28/

  3. #3
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    effectivement, tu peux mettre un paquet de "lignes à la suite"...

    Vu que tu fais un Array, moi perso, je mettrai la liste de nom sur une colonne de feuille excel et j'alimenterai mon array à partir de ces cases.

    1 ) méthode : Tu ne déclare pas la dimention de ton array et tu fais un redim ensuite qui dénombre le nombre de tes cellules, puis une boucle sur celles-ci pour alimenter ton array. Tu es ainsi en nombre dynamique et tu peux ajouter - retrancher facile des items.

    2) avantages
    • Tu peux éventuellement récupérer tout ou partie de la liste en automatique
      l'éditeur est bien plus souple qu'en vba
      il y a une correction orthographique
      tu peux modifier ta liste facilement
      tu peux ordonner (trier) ta liste facilement
      tu peux dénombrer les items de ta liste en un passage de souris
      tu corrigeras une erreur 10 fois plus facilement
      etc etc...



    cordialement,

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut Ca marche!
    Un grand merci à vous deux. Vous m'avez tiré une épine du pied.
    D'abord merci à tirex28: je ne connaissais pas l'usage du _: c'est vrai que c'est bête comme chou!
    Et merci à ormonth. Ce que tu proposes es évidemment beaucoup plus élégant et efficace, je vais m'y mettre.
    Cordialement,
    Nicolas

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

Discussions similaires

  1. [XL-2010] [VBA] Comment faire une formule avec une variable ?
    Par Fackem dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 07/08/2014, 15h04
  2. Comment faire un reset d'une variable
    Par java250r dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/04/2012, 14h28
  3. Réponses: 4
    Dernier message: 21/09/2008, 01h24
  4. [PostGreSQL] Comment faire une vraie affectation de variable
    Par bossLINDROS dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 29/05/2007, 11h35
  5. Comment faire le tri d'un array of array ?
    Par Tchouffy dans le forum Langage
    Réponses: 1
    Dernier message: 16/06/2005, 20h55

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