OVH Cloud OVH Cloud

effacer une entrée Array

5 réponses
Avatar
Jean
Bonjour à tous,

Voila mon problème, j'ai un tableau ci-dessous:

Dim Myarray(1 to 20, 1 to 3)
Myarray (1,1) = nom1
Myarray (1,2) = fonction1
Myarray (1,3) = mail 1
Myarray (2,1) = nom2
Myarray (2,2) = fonction2
Myarray (2,3) = mail 2
Myarray (3,1) = nom3
Myarray (3,2) = fonction3
Myarray(3,3) = mail 3
Etc..

Comment faire pour effacer par exemple la deuxième entrée ?

Merci d'avance

Jean

5 réponses

Avatar
michdenis
Bonjour Jean,

| Comment faire pour effacer par exemple la deuxième entrée ?

Myarray(3,3) = ""

Tu cherches autre chose ?


Salutations !



"Jean" a écrit dans le message de news: 43e8dfd1$0$29197$
Bonjour à tous,

Voila mon problème, j'ai un tableau ci-dessous:

Dim Myarray(1 to 20, 1 to 3)
Myarray (1,1) = nom1
Myarray (1,2) = fonction1
Myarray (1,3) = mail 1
Myarray (2,1) = nom2
Myarray (2,2) = fonction2
Myarray (2,3) = mail 2
Myarray (3,1) = nom3
Myarray (3,2) = fonction3
Myarray(3,3) = mail 3
Etc..

Comment faire pour effacer par exemple la deuxième entrée ?

Merci d'avance

Jean
Avatar
Jean
Oui je cherche autre chose car dans ton exemple, tu ne fais que mettre un
valeur à zéro.
Moi j'aimerais effacer une entrée compléte.
Dans mon exemple ci-dessous, effacer par exemple nom2, fonction2 et mail2
c'est à dire qu'après l'opération,
Myarray(2,1) sera égale à nom3
Myarray(2,2) sera égale à fonction3
et Myarray (2,3) sera égale à mail 3

jean

"michdenis" a écrit dans le message de news:

Bonjour Jean,

| Comment faire pour effacer par exemple la deuxième entrée ?

Myarray(3,3) = ""

Tu cherches autre chose ?


Salutations !



"Jean" a écrit dans le message de news:
43e8dfd1$0$29197$
Bonjour à tous,

Voila mon problème, j'ai un tableau ci-dessous:

Dim Myarray(1 to 20, 1 to 3)
Myarray (1,1) = nom1
Myarray (1,2) = fonction1
Myarray (1,3) = mail 1
Myarray (2,1) = nom2
Myarray (2,2) = fonction2
Myarray (2,3) = mail 2
Myarray (3,1) = nom3
Myarray (3,2) = fonction3
Myarray(3,3) = mail 3
Etc..

Comment faire pour effacer par exemple la deuxième entrée ?

Merci d'avance

Jean





Avatar
Hervé
Bonsoir Jean,

En complément de Denis (où les valeurs seront égales à une chaine vide mais
la dimension du tableau non changée). Il te faut utiliser un autre tableau
que tu redimensionne de façon dynamique en supprimant le ou les
enregistrements désirés et dans ce cas, tu n'aura pas de "trou" dans ton
tableau :

Sub Tableau()
Dim Myarray(1 To 3, 1 To 3) '(1 To 3, 1 To 20)
Dim Tbl()
Dim I As Integer, J As Integer

Myarray(1, 1) = "nom1"
Myarray(2, 1) = "fonction1"
Myarray(3, 1) = "mail1"
Myarray(1, 2) = "nom2"
Myarray(2, 2) = "fonction2"
Myarray(3, 2) = "mail2"
Myarray(1, 3) = "nom3"
Myarray(2, 3) = "fonction3"
Myarray(3, 3) = "mail3"
'Myarray(1, 4) = "nom4"
'Myarray(2, 4) = "fonction4"
'Myarray(3, 4) = "mail4"
'etc...

For I = 1 To UBound(Myarray, 2)
'suprime le 2ème enregistrement
'ou en passant par un Select Case si plusieurs
'Select Case I
' Case Is <> 2, Is <> 5, Is <> 9 'etc...
' code...
'End Select
If I <> 2 Then
J = J + 1
'seule la dernière dimension
'est modifiable d'où la nécessité de
'modifier la structure du tableau
'(1 To 3, 1 To 20) et non (1 To 20, 1 To 3)
ReDim Preserve Tbl(1 To 3, 1 To J)
Tbl(1, J) = Myarray(1, I)
Tbl(2, J) = Myarray(2, I)
Tbl(3, J) = Myarray(3, I)
End If
Next I

'résultat...
For I = 1 To UBound(Tbl, 2)
Debug.Print Tbl(1, I); " "; Tbl(2, I); " "; Tbl(3, I)
Next I

Erase Myarray
Erase Tbl

End Sub

Si le tableau peut être ramené à une dimension, voir la fonction Filter

Hervé.


"Jean" a écrit dans le message de news:
43e8dfd1$0$29197$
Bonjour à tous,

Voila mon problème, j'ai un tableau ci-dessous:

Dim Myarray(1 to 20, 1 to 3)
Myarray (1,1) = nom1
Myarray (1,2) = fonction1
Myarray (1,3) = mail 1
Myarray (2,1) = nom2
Myarray (2,2) = fonction2
Myarray (2,3) = mail 2
Myarray (3,1) = nom3
Myarray (3,2) = fonction3
Myarray(3,3) = mail 3
Etc..

Comment faire pour effacer par exemple la deuxième entrée ?

Merci d'avance

Jean



Avatar
JLuc
*Bonjour Jean*,
Tu peux faire une boucle a partir de la ligne a supprimer

total=Lbound(MyArray) ' Taille du tableau
For x = pos To total - 1 ' Jusqu'a la fin -1
MyArray(x) = MyArray(x + 1) 'Adapte pour plusieurs colonnes
Next ' Boucle
Redim Preserve MyArray(total - 1) ' Redefini le nb d'enreg.


Oui je cherche autre chose car dans ton exemple, tu ne fais que mettre un
valeur à zéro.
Moi j'aimerais effacer une entrée compléte.
Dans mon exemple ci-dessous, effacer par exemple nom2, fonction2 et mail2
c'est à dire qu'après l'opération,
Myarray(2,1) sera égale à nom3
Myarray(2,2) sera égale à fonction3
et Myarray (2,3) sera égale à mail 3

jean

"michdenis" a écrit dans le message de news:

Bonjour Jean,

| Comment faire pour effacer par exemple la deuxième entrée ?

Myarray(3,3) = ""

Tu cherches autre chose ?


Salutations !



"Jean" a écrit dans le message de news:
43e8dfd1$0$29197$
Bonjour à tous,

Voila mon problème, j'ai un tableau ci-dessous:

Dim Myarray(1 to 20, 1 to 3)
Myarray (1,1) = nom1
Myarray (1,2) = fonction1
Myarray (1,3) = mail 1
Myarray (2,1) = nom2
Myarray (2,2) = fonction2
Myarray (2,3) = mail 2
Myarray (3,1) = nom3
Myarray (3,2) = fonction3
Myarray(3,3) = mail 3
Etc..

Comment faire pour effacer par exemple la deuxième entrée ?

Merci d'avance

Jean







--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O


Avatar
JLuc
*Bonjour Jean*,
Tu peux faire une boucle a partir de la ligne a supprimer

total=Lbound(MyArray) ' Taille du tableau
Petite erreur, pas Lbound mais Ubound ;-)




For x = pos To total - 1 ' Jusqu'a la fin -1
MyArray(x) = MyArray(x + 1) 'Adapte pour plusieurs colonnes
Next ' Boucle
Redim Preserve MyArray(total - 1) ' Redefini le nb d'enreg.


Oui je cherche autre chose car dans ton exemple, tu ne fais que mettre un
valeur à zéro.
Moi j'aimerais effacer une entrée compléte.
Dans mon exemple ci-dessous, effacer par exemple nom2, fonction2 et mail2
c'est à dire qu'après l'opération,
Myarray(2,1) sera égale à nom3
Myarray(2,2) sera égale à fonction3
et Myarray (2,3) sera égale à mail 3

jean

"michdenis" a écrit dans le message de news:

Bonjour Jean,

| Comment faire pour effacer par exemple la deuxième entrée ?

Myarray(3,3) = ""

Tu cherches autre chose ?


Salutations !



"Jean" a écrit dans le message de news:
43e8dfd1$0$29197$
Bonjour à tous,

Voila mon problème, j'ai un tableau ci-dessous:

Dim Myarray(1 to 20, 1 to 3)
Myarray (1,1) = nom1
Myarray (1,2) = fonction1
Myarray (1,3) = mail 1
Myarray (2,1) = nom2
Myarray (2,2) = fonction2
Myarray (2,3) = mail 2
Myarray (3,1) = nom3
Myarray (3,2) = fonction3
Myarray(3,3) = mail 3
Etc..

Comment faire pour effacer par exemple la deuxième entrée ?

Merci d'avance

Jean








--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O