Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/05/2011, 10h23   #1
Membre du Club
 
Homme hadrien
Apprenti Ingénieur
Inscription : mars 2011
Messages : 86
Détails du profil
Informations personnelles :
Nom : Homme hadrien
Localisation : France

Informations professionnelles :
Activité : Apprenti Ingénieur
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2011
Messages : 86
Points : 56
Points : 56
Par défaut Erreur 13 :split() source d'un tableau

Bonjour, j'ai une erreur 13, incompatibilité de type avec un tableau d'un split, le code marchait vendredi et là pas moyen de faire fonctionner la procédure. Voici mon code :


Code :
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
Dim TabProd(), TabProdUniq() As String 'les tableaux
Dim LstProd, LstFaq, LstProdUnq As String 'liste de chaque produit
Dim NumTab, NbrEch, NbrPrlv, NbrProd, I As Integer
 
CurrentDb.CreateQueryDef "strQRYd", "SELECT * FROM tblPrlv WHERE ([fldRefDosEss_tblPrlv]= " & Chr(34) & valDos & Chr(34) & ");"
Set adoQryTri = CurrentDb.QueryDefs("strQRYd")
Set adoFindAll = adoQryTri.OpenRecordset
 
adoFindAll.MoveFirst
 
While Not adoFindAll.EOF 'jusqu'à la fin des prélevements
    LstProd = LstProd & adoFindAll!fldCodProd_tblPrlv & ";"
    NbrPrlv = NbrPrlv + 1 ' on balaye les prélevements
    adoFindAll.MoveNext
Wend
 
LstProd = Mid(LstProd, 1, Len(LstProd) - 1)
 
'***************
TabProd() = Split(LstProd, ";") '"LE DEBOGUEUR EST SUR CETTE LIGNE***
'***************
 
For I = 0 To UBound(TabProd)
    If UBound(Split(LstProdUnq, TabProd(I), -1, vbTextCompare)) = 0 _
    Or UBound(Split(LstProdUnq, TabProd(I), -1, vbTextCompare)) = -1 Then
        LstProdUnq = LstProdUnq & ";" & TabProd(I)
        NbrProd = NbrProd + 1
    End If
Next I
 
LstProdUnq = Mid(LstProdUnq, 2, Len(LstProd) - 1)
TabProdUniq() = Split(LstProdUnq, ";")
 
MsgBox "il a   " & NbrPrlv & "prélevements pour" & NbrProd & "  produits"
Je passe la libération des variables. C'est une Windowserie cette erreur ou ça viens de mon code ? Si je defini le tableau avec le nombre de terme, " Dim tabProd(3)", il me renvoi une autre erreur : " Impossible d'affecter à un tableau " !!

Merci pour votre aide

hadrien
FtF Nemesis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 10h36   #2
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonjour.

Avant la ligne qui pose pb, tu peux essayer Bonne journée,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 10h52   #3
Membre du Club
 
Homme hadrien
Apprenti Ingénieur
Inscription : mars 2011
Messages : 86
Détails du profil
Informations personnelles :
Nom : Homme hadrien
Localisation : France

Informations professionnelles :
Activité : Apprenti Ingénieur
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2011
Messages : 86
Points : 56
Points : 56
Merci de la réponse mais ça ne marche pas, Message : "Erreur de compilation : tableau déjà dimentionné"
FtF Nemesis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 11h01   #4
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Re,

Citation:
Envoyé par FtF Nemesis Voir le message
Merci de la réponse mais ça ne marche pas, Message : "Erreur de compilation : tableau déjà dimentionné"
C'est une bonne piste. Suivant ton code, le tableau n'est pas dimensionné dans la déclaration
A ta place, je chercherais toutes les occurences de TabProd dans l'ensemble du projet.

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 12h06   #5
Membre du Club
 
Homme hadrien
Apprenti Ingénieur
Inscription : mars 2011
Messages : 86
Détails du profil
Informations personnelles :
Nom : Homme hadrien
Localisation : France

Informations professionnelles :
Activité : Apprenti Ingénieur
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2011
Messages : 86
Points : 56
Points : 56
J'ai contourné le problème qui vient du lien entre le tableau et le split, je travail directement sur la chaîne de caractère qui sont de la forme " A;B;R;Y;T" avec la fonction suivante :

Code :
1
2
3
for I = 0 to NbrPrlv-1
       TabProd(I) = Mid(LstProd, (2 * I) + 1, 1)
Next I
Merci pour ton aide
FtF Nemesis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h03.


 
 
 
 
Partenaires

Hébergement Web