Manipulations de variables tableaux VBA

thilam

XLDnaute Junior
Bonjour à tous,
Je commence à essayer d'utiliser les variables tableaux pour gagner en performance mais je n'y connais pas encore grand chose et j'ai qq questions générale:

1- Peut-on affecter les valeurs de deux plages non consécutives (même nb de lignes) à un tableau? Un truc dans le genre tableau=union(plage1,plage2).value

2- Peut-on rechercher une valeur dans un tableau ou une colonne d'un tableau (comme avec "Find" ou "Equiv" dans une plage de feuille de calcul)?

3- Peut-on "accoler" deux tableaux à 1 colonne pour obtenir un tableau à 2 colonnes? (tjrs le même nb de lignes) et l'inverse: séparer un tableau à 2 colonnes en 2 tableaux d'1 colonne?

Merci pour votre aide?
Th
 

fred-bene

XLDnaute Occasionnel
Re : Manipulations de variables tableaux VBA

Salut.

Ces fonctions mathématiques sont à créer et ça ne doit pas être dur mais à faire avec des boucles imbriquées.
Fait une fonction de ce type :
-----------------------------------------------------------
Function matrice(a, b) As Variant

ra = UBound(a)
rb = UBound(b)

If ra <> rb Then
matrice = 0

Else
ReDim mat(UBound(a), 1)
For i = 1 To ra
mat(i, 0) = a(i, 1)
mat(i, 1) = b(i, 1)
Next i
End If


matrice = mat

End Function

Sub test()

x = Range("A1:A4")
y = Range("B1:B4")

z = matrice(x, y)

End Sub

-----------------------------------------------------------
 

thilam

XLDnaute Junior
Re : Manipulations de variables tableaux VBA

Ok je vois. Ca peut fair le 2 et le 3 mais j'espérais m'en sortir sans boucle.
Pour le 1 j'ai trouvé une solution consistant à copier les deux plages cote à cote dans une nouvelle feuille, affecter les valeurs au tableau et supprimer la feuille.

Pour le 2, une idée??
Merci
 

thilam

XLDnaute Junior
Re : Manipulations de variables tableaux VBA

Désolé Fred-Bene mais je ne vois pas en quoi rechercher une valeur dans un tableau serait mathématique.
J'ai du mal m'exprimer

Je cherche simplement à trouver si une valeur se trouve dans une variable tableau exactement comme avec "recherchev" ou "equiv" dans une feuille de calcul.

C'est plus clair?
Cdt
Th
 

thilam

XLDnaute Junior
Re : Manipulations de variables tableaux VBA

Merci Crumble!
Effectivement, intéressant mais je n'y touve pas mon bonheur du moment.

J'ai réussi à alimenter mes tableaux et à faire ce que je voulais mais quand je "recopie" les tableaux dans la feuille de calcul (range("a1").resize(ubound(tableau),1)=tableau), toutes les cellulles de la colonne sont identiques alors que le tableau comporte bien des valeurs différentes. Bizarre...bizarre.
Th
 

thilam

XLDnaute Junior
Re : Manipulations de variables tableaux VBA

Merci jp. Celui-là je me le garde précieusement mais je n'ai pas trouvé la réponse à mon dernier problème. Je joins l'exemple car je pense que c'est basic.

le principe de la macro est le suivant: j'ai deux fichiers avec une information commune et je veux compléter le tableau de la feuille2 avec les noms des mois manquants à partir de la feuille1. Ca peut se faire simplement avec recherchev mais je destine cette macro a des novices qui ne savent pas manipuler cette fonction et c'est plus rapide lorsque certaines info sont déjà présentes dans le fichier destination et qu'on ne veut pas les perdre (plusieurs milliers de lignes possibles).
Tous se déroule normalement (pas de commentaires désagréables sur l'écriture pourrie de mon code, merci! ;-D ) ...jusqu'à ce que les valeurs soient rapatriées dans la feuille2 car je me retrouve avec 12 mois de janvier (c'est beaucoup)! Moi pas comprendre parceque moi très bête et ça enerver moi très beaucoup.
Merci pour le coup de main
Cdt
Th
 

Pièces jointes

  • test tsft.zip
    20.6 KB · Affichages: 85

Hervé

XLDnaute Barbatruc
Re : Manipulations de variables tableaux VBA

bonjour

pour retrouver un élément d'une variable tableau sans boucle :

Code:
Dim tablo
 
tablo = Array(25, 124, 963, 745)
 
MsgBox Not IsError(Application.Match(745, tablo, 0)) 'renvoi vrai
MsgBox Not IsError(Application.Match("vasypoupou", tablo, 0)) 'renvoi faux
MsgBox Application.Match(124, tablo, 0) 'renvoi 2 (2ème index du tablo)

salut
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Manipulations de variables tableaux VBA

Pour les tableaux 2D.


Code:
Sub essai()
   a = [A1:B4]
   x = "cc"
   p = Application.Match(x, Application.Index(a, , 1), 0)
   MsgBox p
   MsgBox a(p, 2)
End Sub

JB
 

Pièces jointes

  • Tableaux15.xls
    23.5 KB · Affichages: 224
Dernière édition:

thilam

XLDnaute Junior
Re : Manipulations de variables tableaux VBA

Me revoilou!
Merci Hervé et JP pour la fonction, ça marche.

Reste le pb de la récupération des données des tableaux dans la feuille de calcul. Je ne comprend pas pourquoi "Range(zonarr) = TABFIN" me donne 12 fois "janvier" alors que le tableau d'origine (TABCIB) se remplit bien avec les noms de tous les mois. Idem pour le tableau d'erreur, j'en ai 2 et il me met 12 fois le numéro du premier mois manquant (Je devrais avoir 7 et 8 dans la feuille d'erreurs).

C'est surement tout bête mais....
Th
 

thilam

XLDnaute Junior
Re : Manipulations de variables tableaux VBA

Astuce: J'ai utilisé la fonction pour résoudre une de mes questions du début à laquelle je n'avais pas eu de réponse. Pour extraire une colonne d'une variable-tableau: Tab2=index(Tab1,,n) où Tab2 et Tab1 sont les variable-tableau et n est le numéro de la colonne à récupérer. Si ça peut être utile...
Curieusement, ça résoud le pb des 12 mois de janvier. Bonne pioche donc.
Tout aussi curieusement, je l'ai appliqué à l'autre table (CODERR) mais là ça ne marche pas. Ce serait trop simple...
Th
 

Discussions similaires

Réponses
5
Affichages
328

Statistiques des forums

Discussions
312 202
Messages
2 086 177
Membres
103 152
dernier inscrit
Karibu