Tableau de taille (1, 1) [Résolu]

Signaler
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015
-
 Utilisateur anonyme -
Salut salut,

Dites j'ai une plage de cellules de la colonne A que je veux mettre dans un tableau. La plage à une taille variable, donc le début du programme me donne la ligne de départ et la ligne de fin.

du genre debut 1 et fin 10 => tab = range("A" & debut & ":A" & fin).value

après je compare le contenu du tableau à une chaine. du genre

for i = 1 to fin - debut + 1
if tab(i, 1) = chaine ....

Et le problème c'est que lorsque debut est égal à fin, il devient impossible d'évoquer tab(1, 1). tab est considéré comme un string et non un tableau de string....

Quelqu'un aurait une solution autre que de mettre une nouvelle condition, du genre if debut = fin then ...



nitho l'amateur

7 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
regarde, alors :

Private Sub CommandButton1_Click()
  Dim debut As Long, fin As Long, tablo
  debut = 2 ' ou ce que tu veux
  fin = 2 'ou ce que tu veux
  If debut = fin Then
    Dim tabli(1 To 1, 1 To 1)
    tabli(1, 1) = Range("A" & debut & ":A" & fin).Value
    tablo = tabli
  Else
    tablo = Range("A" & debut & ":A" & fin).Value
  End If
  For i = 1 To UBound(tablo)
      MsgBox tablo(i, 1)
  Next
End Sub


Mais tu aurais déjà dû (tu ne l'as pas encore fait) cliquer sur "Réponse acceptée" !

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,
tu ne pourras échapper à une expression conditionnelle.


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Maintenant et selon (mais on ne le sait pas) ce que tu veux faire de ce tableau (comment tu veux l'exploiter), tu as toujours la ressource de ce genre d'astuce :
Dim debut As Long, fin As Long, tablo
  debut = 1
  fin = 1
  tablo = Range("A" & debut & ":A" & fin + 1).Value
  For i = 1 To UBound(tablo) - 1
    MsgBox tablo(i, 1)
  Next

Bien cher payé pour éviter juste une expression conditionnelle


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
On ne te vois plus.
Quand tu reviendras, je te montrerais une autre astuce pour :
- avoir toujours un tableau tablo à 2 dimensions et exploitable toujours de la même manière
- faire en sorte de n'utiliser qu'une seule fois une expression conditionnelle, de sorte à ne pas (en cas d'utilisations multiples) avoir à charger ton code de nombreuses expressions conditionnelles


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015

Vas y je suis là ... :)


nitho l'amateur
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
et alors, M. nitho ?
Vas y je suis là ... :)

tu étais pourtant là encore à 20h.02

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP

Salut ucfoutu,
Peut-être que les notifications automatiques ne fonctionnent toujours pas.
Bonne soirée.