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 compilaton avec l'instruction redim


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 44
    Par défaut Erreur compilaton avec l'instruction redim
    bonjour,

    J'ai implémenter le code suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub DonneesConformiteDDC()
    personnes = Array()
    ReDim personnes(1)
    End Sub()
    Mais quand je compile j'obtiens le message d'erreur suivant :

    Erreur compilation
    Redim incorrect

    Quelqu'un pourrait m'aider à identifier le problème?

    bien cordialement.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    ce n'est pas ainsi qu'on déclare une variable tableau
    étant donné que tu n'expliques pas ce que tu comptes faire, pas évident de te proposer la meilleur explication
    voici donc quelque chose de générique

    déclarer un tableau dynamiquement et le redimensionner derrière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MonTableau()
    Redim MonTableau(1)
    Attention, par défaut on est en base 0, donc Redim MonTableau(1) crée deux positions (0 et 1)
    pour travailler en base 1, il faut ajouter en haut du module

    ou alors bien préciser qu'on commence à 1 sur un tableau en particulier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MonTableau
    Redim MonTableau (1 To 1)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub DonneesConformiteDDC()
    dim personnes()
    ReDim Preserve personnes(1)  'un redim efface le tableau d'ou l'instruction preserv
    EndSub

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 44
    Par défaut
    Bonjour,

    je créer un XML
    Merci pour vos réponses, j'ai effectué les modifications et j'ai debuggé maintenant mon code il y a un problème qu eje ne vois pas quand il rentre dans ma première boucle : "For Each Enfant " ca passe à la deuxièle boucle il me dit qu'il y a un problème de compatibiloté de type sur cette ligne de commande : "nomElement.Text = enfant(0)"
    je me demande si c'est pa sun problème d'indexation dans le tableau le fait de commencer à 0 au lieu de 1? Vosu en pensez quoi?
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    Sub DonneesConformiteDDC()
    Dim personnes
    ReDim personnes(1)
     
     
    Dim georges
    ReDim georges(4)
     
    georges(0) = "Baud"
    georges(1) = "Georges"
    georges(2) = "Marié"
    georges(3) = 49
     
    Dim enfants
    ReDim enfants(1)
     
    Dim elisabeth
    ReDim elisabeth(1)
     
    elisabeth(0) = "Tiop"
    elisabeth(1) = "Elisabeth"
     
    enfants(0) = elisabeth
     
    georges(4) = enfants
     
    personnes(0) = georges
     
    Dim judith
    ReDim judith(4)
     
    judith(0) = "Trinzka"
    judith(1) = "Judith"
    judith(2) = "Célibataire"
    judith(3) = 22
    judith(4) = Array()
     
    personnes(1) = judith
     
    Set xmlDoc = CreateObject("Microsoft.XMLDOM")
     
    Set oCreation = xmlDoc.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
    xmlDoc.InsertBefore oCreation, xmlDoc.ChildNodes.Item(0)
     
    Set Root = xmlDoc.createElement("personnes")
     
    xmlDoc.appendChild (Root)
     
    For Each personne In personnes
        Set personneElement = xmlDoc.createElement("personne")
     
        Set nomElement = xmlDoc.createElement("nom")
        nomElement.Text = personne(0)
        personneElement.appendChild (nomElement)
     
        Set prenomElement = xmlDoc.createElement("prenom")
        prenomElement.Text = personne(1)
        personneElement.appendChild (prenomElement)
     
        Set etatElement = xmlDoc.createElement("etat")
        etatElement.Text = personne(2)
        personneElement.appendChild (etatElement)
     
        personneElement.setAttribute "age", personne(3)
     
        If UBound(personne(4)) > -1 Then
            Set enfantsElement = xmlDoc.createElement("enfants")
     
            For Each enfant In personne(4)
                Set enfantElement = xmlDoc.createElement("enfant")
     
                Set nomElement = xmlDoc.createElement("nom")
                nomElement.Text = enfant(0)
                enfantElement.appendChild (nomElement)
     
                Set prenomElement = xmlDoc.createElement("prenom")
                prenomElement.Text = enfant(1)
                enfantElement.appendChild (prenomElement)
     
                enfantsElement.appendChild (enfantElement)
            Next
     
            personneElement.appendChild (enfantsElement)
        End If
    End Sub

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    avant de plonger dans ton code, je vais rebondir sur ta supposition :

    je me demande si c'est pa sun problème d'indexation dans le tableau le fait de commencer à 0 au lieu de 1? Vosu en pensez quoi?
    comme je l'ai expliqué dans mon message, si tu places en haut du module

    alors l'index de tes tableaux commencera à 1 au lieu de 0

    Nous te laissons le soin de passer en Base 1 et de vérifier de ton côté pour commencer si c'est bien le problème

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 44
    Par défaut Erreur de compilation
    Comme indique le titre j'ai mis Option Base 1 au tout debut des declaration dans le module et j'obtiens un message d'erreur de compilation :

    "Instruction incorrecte dans une procédure"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    
    Sub DonneesConformiteDDC()
    
    Option Base 1
    
    Dim personnes
    ReDim personnes(1)
    
     
    Dim georges
    ReDim georges(4)

  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 44
    Par défaut
    J'ai compris où étais l'erreur,

    En effet je déclarait un tableau de 3 enfant mais je n'itialisait que le premier enfant
    Il fallait que je definisse égalmeent enfant(1) et enfant(2).

    Merci encore.

    c'est un exerciec d'entrainement que j'ai trouvé sur internet.
    Il va me servait d'exemple pour ecrire un code qui créerait un fichier xml client avec encore plus de données de manières automatiques et il fallait que je comprennes comment marche l'algo.
    Les erreurs ca aident.
    mais du coup il y a plein d'erreurs dans le code trouvé sur internet : http://baptiste-wicht.developpez.com.../xpath/#L5.2.2

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

Discussions similaires

  1. DELPHI XE - Erreur ADOQuery avec instruction order by
    Par vitch8 dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/01/2016, 11h37
  2. erreur avec l' instruction include
    Par saida29 dans le forum Fortran
    Réponses: 5
    Dernier message: 06/02/2015, 14h26
  3. Levée d'erreur avec l'instruction OPENRECORDSET
    Par formidable78 dans le forum VBA Access
    Réponses: 7
    Dernier message: 06/10/2008, 20h24
  4. Erreur fréquente avec ASP et IIS
    Par Community Management dans le forum ASP
    Réponses: 2
    Dernier message: 11/02/2004, 22h20
  5. Erreurs IIS avec Multiples Frames avec xmlrad
    Par powerlog dans le forum XMLRAD
    Réponses: 4
    Dernier message: 01/07/2003, 13h15

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