Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tableau dynamique à 2 dimensions

8 réponses
Avatar
mml
Bonjour,

Je cherche à créer un tableau dynamique à 2 dimensions.

Pour 1 dimension je fais :

Dim Tableau()
...
ReDim Tableau(i)
...

Mais comment faire pour 2 dimensions ?

Marci d'avance.

Marc

8 réponses

Avatar
Gilbert
Bonjour,

Tout simplement

ReDim Tableau(i, j)

--

Cordialement,

Gilbert
"mml" a écrit dans le message de
news:
Bonjour,

Je cherche à créer un tableau dynamique à 2 dimensions.

Pour 1 dimension je fais :

Dim Tableau()
...
ReDim Tableau(i)
...

Mais comment faire pour 2 dimensions ?

Marci d'avance.

Marc




Avatar
mml
Mais si on ne met pas de Dim au debut, Dim au début, message "Variable non
définie" à la compil.
Et si on met un Dim Tableau(), message "Indice en dehors de la plage" à
l'exécution ...



"Gilbert" a écrit dans le message de
news:
Bonjour,

Tout simplement

ReDim Tableau(i, j)

--

Cordialement,

Gilbert
"mml" a écrit dans le message de
news:
Bonjour,

Je cherche à créer un tableau dynamique à 2 dimensions.

Pour 1 dimension je fais :

Dim Tableau()
...
ReDim Tableau(i)
...

Mais comment faire pour 2 dimensions ?

Marci d'avance.

Marc








Avatar
Gilbert
Sur quelle ligne l'erreur d'exécution?

--

Cordialement,

Gilbert
"mml" a écrit dans le message de
news:
Mais si on ne met pas de Dim au debut, Dim au début, message "Variable non
définie" à la compil.
Et si on met un Dim Tableau(), message "Indice en dehors de la plage" à
l'exécution ...



"Gilbert" a écrit dans le message de
news:
Bonjour,

Tout simplement

ReDim Tableau(i, j)

--

Cordialement,

Gilbert
"mml" a écrit dans le message de
news:
Bonjour,

Je cherche à créer un tableau dynamique à 2 dimensions.

Pour 1 dimension je fais :

Dim Tableau()
...
ReDim Tableau(i)
...

Mais comment faire pour 2 dimensions ?

Marci d'avance.

Marc












Avatar
mml
Sur la ligne ReDim. En réel :

ReDim Preserve liste(NbTXT, 2)



"Gilbert" a écrit dans le message de
news:
Sur quelle ligne l'erreur d'exécution?

--

Cordialement,

Gilbert
"mml" a écrit dans le message de
news:
Mais si on ne met pas de Dim au debut, Dim au début, message "Variable
non


définie" à la compil.
Et si on met un Dim Tableau(), message "Indice en dehors de la plage" à
l'exécution ...



"Gilbert" a écrit dans le message de
news:
Bonjour,

Tout simplement

ReDim Tableau(i, j)

--

Cordialement,

Gilbert
"mml" a écrit dans le message de
news:
Bonjour,

Je cherche à créer un tableau dynamique à 2 dimensions.

Pour 1 dimension je fais :

Dim Tableau()
...
ReDim Tableau(i)
...

Mais comment faire pour 2 dimensions ?

Marci d'avance.

Marc
















Avatar
Gilbert
Donne tout le code de ta procédure, je n'arrive pas à reproduire l'erreur.

Quelle est la valeur de NbTXT?
As-tu essayé avec ReDim Preserve liste(5, 2) ? 5 ou n'importe quelle valeur,
juste pour être sûr que ce n'est pas la valeur de ta variable qui pose
problème.

--
Cordialement,

Gilbert


"mml" a écrit dans le message de
news:
Sur la ligne ReDim. En réel :

ReDim Preserve liste(NbTXT, 2)



"Gilbert" a écrit dans le message de
news:
Sur quelle ligne l'erreur d'exécution?

--

Cordialement,

Gilbert
"mml" a écrit dans le message de
news:
Mais si on ne met pas de Dim au debut, Dim au début, message "Variable
non


définie" à la compil.
Et si on met un Dim Tableau(), message "Indice en dehors de la plage"
à



l'exécution ...



"Gilbert" a écrit dans le message de
news:
Bonjour,

Tout simplement

ReDim Tableau(i, j)

--

Cordialement,

Gilbert
"mml" a écrit dans le message de
news:
Bonjour,

Je cherche à créer un tableau dynamique à 2 dimensions.

Pour 1 dimension je fais :

Dim Tableau()
...
ReDim Tableau(i)
...

Mais comment faire pour 2 dimensions ?

Marci d'avance.

Marc




















Avatar
mml
Voilà le code .

********************************************************************
Function ImportCDTXT() As Boolean

On Error GoTo Err_ImportCDTXT
Dim j As Byte, NbTXT As Byte, BonFichier As String
Dim liste() As String
Dim db As Database, mt As Recordset
Set db = CurrentDb()
Set mt = db.OpenRecordset("TFichiersEDI")

ImportCDTXT = False
NbTXT = 0

Dim varItm As Variant
Dim strFiles As String
Dim strTmp As String

'strFiles = ""
With Application.FileSearch
.NewSearch
.LookIn = "M:EDIMT"
.SearchSubFolders = False
.MatchTextExactly = True
.FileType = 1
If .Execute > 0 Then
For Each varItm In .FoundFiles
strTmp = fGetFileName(varItm)
If Left$(strTmp, 2) = "CD" And Right$(strTmp, 3) = "TXT"
Then 'CAS FICHIER TROUVé
BonFichier = strTmp
ReDim Preserve liste(NbTXT, 2)
NbTXT = NbTXT + 1
liste(NbTXT, 1) = BonFichier
liste(NbTXT, 2) = Str$(FileDateTime("M:EDIMT" &
BonFichier))

mt.AddNew
mt!NomFichier = Left$(BonFichier, 8)
mt!DateFichier = FileDateTime("M:EDIMT" & BonFichier)
mt!ATraiter = True
mt.Update

ImportCDTXT = True

'MsgBox ImportCDTXT & " " & .FoundFiles.Count
End If

Next varItm
End If

End With
If NbTXT > 0 Then
DoCmd.OpenForm ("Fichiers à traiter")
Else: MsgBox "Pas de fichier CDXXXXXX.TXT trouvé."
End If



Exit_ImportCDTXT:
Exit Function
mt.Close
db.Close
Set mt = Nothing
Set db = Nothing

Err_ImportCDTXT:
If Err = 3051 Then
Resume 'Permet de passer le message d'absence de droit de lire le
fichier.
Else: MsgBox Err.Description & " _ Erreur N° " & Err & " dans
ImportCDTXT()"
End If

End Function

*********************************************************************





"Gilbert" a écrit dans le message de
news:
Donne tout le code de ta procédure, je n'arrive pas à reproduire l'erreur.

Quelle est la valeur de NbTXT?
As-tu essayé avec ReDim Preserve liste(5, 2) ? 5 ou n'importe quelle
valeur,

juste pour être sûr que ce n'est pas la valeur de ta variable qui pose
problème.

--
Cordialement,

Gilbert


"mml" a écrit dans le message de
news:
Sur la ligne ReDim. En réel :

ReDim Preserve liste(NbTXT, 2)



"Gilbert" a écrit dans le message de
news:
Sur quelle ligne l'erreur d'exécution?

--

Cordialement,

Gilbert
"mml" a écrit dans le message de
news:
Mais si on ne met pas de Dim au debut, Dim au début, message
"Variable




non
définie" à la compil.
Et si on met un Dim Tableau(), message "Indice en dehors de la
plage"




à
l'exécution ...



"Gilbert" a écrit dans le message de
news:
Bonjour,

Tout simplement

ReDim Tableau(i, j)

--

Cordialement,

Gilbert
"mml" a écrit dans le message de
news:
Bonjour,

Je cherche à créer un tableau dynamique à 2 dimensions.

Pour 1 dimension je fais :

Dim Tableau()
...
ReDim Tableau(i)
...

Mais comment faire pour 2 dimensions ?

Marci d'avance.

Marc
























Avatar
Gilbert
Extrait de l'aide:

Si vous utilisez le mot clé Preserve, vous ne pouvez redimensionner que la
dernière dimension du tableau. Vous ne pouvez en aucun cas modifier le
nombre de dimensions. Par exemple, si votre tableau n'a qu'une dimension,
vous pouvez la modifier puisqu'il s'agit de la dernière et seule dimension.
Toutefois, si le tableau compte plusieurs dimensions, seule la taille de la
dernière dimension est modifiable si vous souhaitez préserver le contenu du
tableau.

Regardes de ce côté:

--
Cordialement,

Gilbert


"mml" a écrit dans le message de
news:
Voilà le code .

********************************************************************
Function ImportCDTXT() As Boolean

On Error GoTo Err_ImportCDTXT
Dim j As Byte, NbTXT As Byte, BonFichier As String
Dim liste() As String
Dim db As Database, mt As Recordset
Set db = CurrentDb()
Set mt = db.OpenRecordset("TFichiersEDI")

ImportCDTXT = False
NbTXT = 0

Dim varItm As Variant
Dim strFiles As String
Dim strTmp As String

'strFiles = ""
With Application.FileSearch
.NewSearch
.LookIn = "M:EDIMT"
.SearchSubFolders = False
.MatchTextExactly = True
.FileType = 1
If .Execute > 0 Then
For Each varItm In .FoundFiles
strTmp = fGetFileName(varItm)
If Left$(strTmp, 2) = "CD" And Right$(strTmp, 3) = "TXT"
Then 'CAS FICHIER TROUVé
BonFichier = strTmp
ReDim Preserve liste(NbTXT, 2)
NbTXT = NbTXT + 1
liste(NbTXT, 1) = BonFichier
liste(NbTXT, 2) = Str$(FileDateTime("M:EDIMT" &
BonFichier))

mt.AddNew
mt!NomFichier = Left$(BonFichier, 8)
mt!DateFichier = FileDateTime("M:EDIMT" &
BonFichier)

mt!ATraiter = True
mt.Update

ImportCDTXT = True

'MsgBox ImportCDTXT & " " & .FoundFiles.Count
End If

Next varItm
End If

End With
If NbTXT > 0 Then
DoCmd.OpenForm ("Fichiers à traiter")
Else: MsgBox "Pas de fichier CDXXXXXX.TXT trouvé."
End If



Exit_ImportCDTXT:
Exit Function
mt.Close
db.Close
Set mt = Nothing
Set db = Nothing

Err_ImportCDTXT:
If Err = 3051 Then
Resume 'Permet de passer le message d'absence de droit de lire le
fichier.
Else: MsgBox Err.Description & " _ Erreur N° " & Err & " dans
ImportCDTXT()"
End If

End Function

*********************************************************************





"Gilbert" a écrit dans le message de
news:
Donne tout le code de ta procédure, je n'arrive pas à reproduire
l'erreur.



Quelle est la valeur de NbTXT?
As-tu essayé avec ReDim Preserve liste(5, 2) ? 5 ou n'importe quelle
valeur,

juste pour être sûr que ce n'est pas la valeur de ta variable qui pose
problème.

--
Cordialement,

Gilbert


"mml" a écrit dans le message de
news:
Sur la ligne ReDim. En réel :

ReDim Preserve liste(NbTXT, 2)



"Gilbert" a écrit dans le message de
news:
Sur quelle ligne l'erreur d'exécution?

--

Cordialement,

Gilbert
"mml" a écrit dans le message de
news:
Mais si on ne met pas de Dim au debut, Dim au début, message
"Variable




non
définie" à la compil.
Et si on met un Dim Tableau(), message "Indice en dehors de la
plage"




à
l'exécution ...



"Gilbert" a écrit dans le message de
news:
Bonjour,

Tout simplement

ReDim Tableau(i, j)

--

Cordialement,

Gilbert
"mml" a écrit dans le message de
news:
Bonjour,

Je cherche à créer un tableau dynamique à 2 dimensions.

Pour 1 dimension je fais :

Dim Tableau()
...
ReDim Tableau(i)
...

Mais comment faire pour 2 dimensions ?

Marci d'avance.

Marc




























Avatar
mml
Superbe, c'est ça la réponse : inverser le 2 dimensions car seul la 2ème
peut être modifiée dynamiquement avec "Preserve".
Merci mille fois.


"Gilbert" a écrit dans le message de
news:
Extrait de l'aide:

Si vous utilisez le mot clé Preserve, vous ne pouvez redimensionner que la
dernière dimension du tableau. Vous ne pouvez en aucun cas modifier le
nombre de dimensions. Par exemple, si votre tableau n'a qu'une dimension,
vous pouvez la modifier puisqu'il s'agit de la dernière et seule
dimension.

Toutefois, si le tableau compte plusieurs dimensions, seule la taille de
la

dernière dimension est modifiable si vous souhaitez préserver le contenu
du

tableau.

Regardes de ce côté:

--
Cordialement,

Gilbert


"mml" a écrit dans le message de
news:
Voilà le code .

********************************************************************
Function ImportCDTXT() As Boolean

On Error GoTo Err_ImportCDTXT
Dim j As Byte, NbTXT As Byte, BonFichier As String
Dim liste() As String
Dim db As Database, mt As Recordset
Set db = CurrentDb()
Set mt = db.OpenRecordset("TFichiersEDI")

ImportCDTXT = False
NbTXT = 0

Dim varItm As Variant
Dim strFiles As String
Dim strTmp As String

'strFiles = ""
With Application.FileSearch
.NewSearch
.LookIn = "M:EDIMT"
.SearchSubFolders = False
.MatchTextExactly = True
.FileType = 1
If .Execute > 0 Then
For Each varItm In .FoundFiles
strTmp = fGetFileName(varItm)
If Left$(strTmp, 2) = "CD" And Right$(strTmp, 3) = "TXT"
Then 'CAS FICHIER TROUVé
BonFichier = strTmp
ReDim Preserve liste(NbTXT, 2)
NbTXT = NbTXT + 1
liste(NbTXT, 1) = BonFichier
liste(NbTXT, 2) = Str$(FileDateTime("M:EDIMT" &
BonFichier))

mt.AddNew
mt!NomFichier = Left$(BonFichier, 8)
mt!DateFichier = FileDateTime("M:EDIMT" &
BonFichier)

mt!ATraiter = True
mt.Update

ImportCDTXT = True

'MsgBox ImportCDTXT & " " & .FoundFiles.Count
End If

Next varItm
End If

End With
If NbTXT > 0 Then
DoCmd.OpenForm ("Fichiers à traiter")
Else: MsgBox "Pas de fichier CDXXXXXX.TXT trouvé."
End If



Exit_ImportCDTXT:
Exit Function
mt.Close
db.Close
Set mt = Nothing
Set db = Nothing

Err_ImportCDTXT:
If Err = 3051 Then
Resume 'Permet de passer le message d'absence de droit de lire le
fichier.
Else: MsgBox Err.Description & " _ Erreur N° " & Err & " dans
ImportCDTXT()"
End If

End Function

*********************************************************************





"Gilbert" a écrit dans le message de
news:
Donne tout le code de ta procédure, je n'arrive pas à reproduire
l'erreur.



Quelle est la valeur de NbTXT?
As-tu essayé avec ReDim Preserve liste(5, 2) ? 5 ou n'importe quelle
valeur,

juste pour être sûr que ce n'est pas la valeur de ta variable qui pose
problème.

--
Cordialement,

Gilbert


"mml" a écrit dans le message de
news:
Sur la ligne ReDim. En réel :

ReDim Preserve liste(NbTXT, 2)



"Gilbert" a écrit dans le message de
news:
Sur quelle ligne l'erreur d'exécution?

--

Cordialement,

Gilbert
"mml" a écrit dans le message de
news:
Mais si on ne met pas de Dim au debut, Dim au début, message
"Variable




non
définie" à la compil.
Et si on met un Dim Tableau(), message "Indice en dehors de la
plage"




à
l'exécution ...



"Gilbert" a écrit dans le message de
news:
Bonjour,

Tout simplement

ReDim Tableau(i, j)

--

Cordialement,

Gilbert
"mml" a écrit dans le message de
news:
Bonjour,

Je cherche à créer un tableau dynamique à 2 dimensions.

Pour 1 dimension je fais :

Dim Tableau()
...
ReDim Tableau(i)
...

Mais comment faire pour 2 dimensions ?

Marci d'avance.

Marc