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

convertir une chaine de caractère en liste de colonnes ?

8 réponses
Avatar
Alfred WALLACE
Bonjour

dans une cellule nomm=E9e COLONNES_A_EFFACER j'ai les caract=E8res
suivants : A,G,AM,AO

je doudrais r=E9cup=E9rer dans un tableau LST_COLS les 4 (dans mon
exemple) valeurs (toujours s=E9par=E9es par une ",")

puis je voudrais faire une boucle

entre Lbound(lst_cols,1) et Ubound(lst_cols,1)

me positionner =E0 la colonne , puis la supprimer en totalit=E9.



Merci de votre aide.


Jos=E9

8 réponses

Avatar
MichDenis
Un exemple :




" Déclaration du tableau 10 lignes, 1 colonne.
Dim S(1 To 10, 1 To 1)

'boucle pour remplir le tableau
For a = 1 To UBound(S, 1)
For b = 1 To UBound(S, 2)
S(a, b) = "A,G,AM,AO"
Next
Next
'Pour copier le tableau dans une plage de cellules
Range("B1").Resize(UBound(S, 1), UBound(S, 2)) = S




"Alfred WALLACE" a écrit dans le message de news:

Bonjour

dans une cellule nommée COLONNES_A_EFFACER j'ai les caractères
suivants : A,G,AM,AO

je doudrais récupérer dans un tableau LST_COLS les 4 (dans mon
exemple) valeurs (toujours séparées par une ",")

puis je voudrais faire une boucle

entre Lbound(lst_cols,1) et Ubound(lst_cols,1)

me positionner à la colonne , puis la supprimer en totalité.



Merci de votre aide.


José
Avatar
Alfred WALLACE

Un exemple :
" Déclaration du tableau 10 lignes, 1 colonne.
Dim S(1 To 10, 1 To 1)

'boucle pour remplir le tableau
For a = 1 To UBound(S, 1)
For b = 1 To UBound(S, 2)
S(a, b) = "A,G,AM,AO"
Next
Next
'Pour copier le tableau dans une plage de cellules
Range("B1").Resize(UBound(S, 1), UBound(S, 2)) = S


Bonjour MichDenis,
peux tu m'en dire un peu plus sur ton code ?

1) tu crées un tableau à 2 dimension : dim1 va de 1 à 10 éléments,
et la dim2 n'a qu'un seul
élément.

2) ensuite tu boucles
S(1, 1) = "A,G,AM,AO"
S(2, 1) = "A,G,AM,AO"
S(3, 1) = "A,G,AM,AO"
etc jusqu'à
S(10, 1) = "A,G,AM,AO"


moi, ce que je recherche c'est plutot

S(1) = "A"
S(2) = "G"
S(3) = "AM"
S(4) = "AO"

donc, je ne pense pas que la première partie de ton exemple
corresponde
à ce que je souhaite faire.

Merci pour ton aide.

José

Avatar
AV
dans une cellule nommée COLONNES_A_EFFACER j'ai les caractères
suivants : A,G,AM,AO
moi, ce que je recherche c'est plutot
S(1) = "A"
S(2) = "G"


S = Split([COLONNES_A_EFFACER], ",")
MsgBox S(1)

??
AV

Avatar
Alfred WALLACE
Merci AV,
en parcourant le forum, j'ai effectivement découvert la fonction
SPLIT, laquelle
d'ailleurs utilise le separateur par defaut 'espace'

Donc, je peux mettre dans ma zone nommée COLONNES_A_EFFACER "a g h
fi"
et arr = split(COLONNES_A_EFFACER)
va me generer un tableau arr de 4 valeurs (de 0 à 3)

PAR CONTRE,

je n'arrive pas à faire une multiselection des colonnes
a:a et g:g et h:h et fi:fi pour pouvoir les effacer d'un coup.

Est-ce possible d'après toi ?

Merci

José


dans une cellule nommée COLONNES_A_EFFACER j'ai les caractères
suivants : A,G,AM,AO
moi, ce que je recherche c'est plutot
S(1) = "A"
S(2) = "G"


S = Split([COLONNES_A_EFFACER], ",")
MsgBox S(1)

??
AV



Avatar
AV
Reprenons.....

Tu as une cellule nommée "COLONNES_A_EFFACER" contenant par exemple ce type de
chaîne :
A,G,AM,AO
Tu souhaites sélectionner(supprimer) les colonnes entières correspondant à
chacun des éléments de la chaîne :

Sub zzzz()
S = Split([COLONNES_A_EFFACER], ",")
For i = 0 To UBound(S)
ch = ch & S(i) & ":" & S(i) & ","
Next i
Range(Left(ch, Len(ch) - 1)).Select 'ou Delete
End Sub

AV
Avatar
Garette
Bonjour,

Sub Test()
arr = Split(Range("COLONNES_A_EFFACER"))
For i = 0 To UBound(arr)
Columns(arr(i)).ClearContents
Next
End Sub
Avatar
MichDenis
Seulement pour le plaisir, ceci aussi est possible

Sub zzzz()
S = Split(Range("COLONNES_A_EFFACER"), ",")
For i = UBound(S) To 0 Step -1
With Range(S(i) & ":" & S(i)).EntireColumn
.Delete
End With
Next
End Sub

;-)



"Alfred WALLACE" a écrit dans le message de news:

Merci AV,
en parcourant le forum, j'ai effectivement découvert la fonction
SPLIT, laquelle
d'ailleurs utilise le separateur par defaut 'espace'

Donc, je peux mettre dans ma zone nommée COLONNES_A_EFFACER "a g h
fi"
et arr = split(COLONNES_A_EFFACER)
va me generer un tableau arr de 4 valeurs (de 0 à 3)

PAR CONTRE,

je n'arrive pas à faire une multiselection des colonnes
a:a et g:g et h:h et fi:fi pour pouvoir les effacer d'un coup.

Est-ce possible d'après toi ?

Merci

José


dans une cellule nommée COLONNES_A_EFFACER j'ai les caractères
suivants : A,G,AM,AO
moi, ce que je recherche c'est plutot
S(1) = "A"
S(2) = "G"


S = Split([COLONNES_A_EFFACER], ",")
MsgBox S(1)

??
AV



Avatar
Alfred WALLACE
Merci à tous pour vos exemples !!!

Voici ce que j'ai fait :

arr = Split([parametres!LST_COLS_SUPPR])

U = UBound(arr, 1) : L = LBound(arr, 1)

ActiveCell.Select

' là je récupère et selectionne la première lettre (donc la 1ere
colonne)
Set Plage = Range(arr(0) & ":" & arr(0)): Plage.Select

For I = l + 1 To u
colonne = arr(I) & ":" & arr(I)
Set Plage = Union(Plage, Range(colonne))
Plage.Select
Next
' j'efface tout ce qui est selectionné
Plage.EntireColumn.Delete

Set Plage = Nothing
Set arr = Nothing



Merci encore !

José







Seulement pour le plaisir, ceci aussi est possible

Sub zzzz()
S = Split(Range("COLONNES_A_EFFACER"), ",")
For i = UBound(S) To 0 Step -1
With Range(S(i) & ":" & S(i)).EntireColumn
.Delete
End With
Next
End Sub

;-)



"Alfred WALLACE" a écrit dans le message de news:

Merci AV,
en parcourant le forum, j'ai effectivement découvert la fonction
SPLIT, laquelle
d'ailleurs utilise le separateur par defaut 'espace'

Donc, je peux mettre dans ma zone nommée COLONNES_A_EFFACER "a g h
fi"
et arr = split(COLONNES_A_EFFACER)
va me generer un tableau arr de 4 valeurs (de 0 à 3)

PAR CONTRE,

je n'arrive pas à faire une multiselection des colonnes
a:a et g:g et h:h et fi:fi pour pouvoir les effacer d'un coup.

Est-ce possible d'après toi ?

Merci

José


dans une cellule nommée COLONNES_A_EFFACER j'ai les caractères
suivants : A,G,AM,AO
moi, ce que je recherche c'est plutot
S(1) = "A"
S(2) = "G"


S = Split([COLONNES_A_EFFACER], ",")
MsgBox S(1)

??
AV