Une fonction qui renvoie une colonne déterminée d'un tableau

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

J'ai un tableau comprenant, comme beaucoup de tableaux, plusieurs lignes et plusieurs colonnes.
Pour des raisons pratiques, j'ai nommé ce tableau ; supposons "zaza".
Quand je veux faire une recherche dans une des colonnes de ce tableau, je voudrais la simplifier à l'aide d'une fonction qui me permettrait de sélectionner directement la colonne du tableau "zaza" qui m'intéresse, par ex. : ColTab ("zaza",Nº colonne).

Merci d'avance pour tout coup de pouce.
 

Magic_Doctor

XLDnaute Barbatruc
Re : Une fonction qui renvoie une colonne déterminée d'un tableau

Bonsoir R@chid,

J'ai pour habitude de toujours envoyer des fichiers, mais cette fois-ci je pensais qu'une question (je l'espérais) bien posée était suffisante. D'accord, j'envoie un fichier.

Merci pour m'avoir lu.

Bonne soirée ou nuit (nous sommes assez éloignés).
 

Pièces jointes

  • Coïncider après Tri.xls
    71 KB · Affichages: 41

BOISGONTIER

XLDnaute Barbatruc
Repose en paix

Pièces jointes

  • Copie de Coïncider après Tri.xls
    50 KB · Affichages: 52
  • Copie de Coïncider après Tri.xls
    50 KB · Affichages: 44
  • Copie de Coïncider après Tri.xls
    50 KB · Affichages: 47
Dernière édition:

Magic_Doctor

XLDnaute Barbatruc
Re : Une fonction qui renvoie une colonne déterminée d'un tableau

J'ai bidouillé cette fonction :

Function ColTab(tableau As Range, col As Byte) As String
'Renvoie l'adresse d'une colonne choisie dans un tableau

Dim nblgn As Integer, lgn1 As Range, lgn2 As Range
Dim ad1 As String, ad2 As String

nblgn = [ListeItems1bis].Rows.Count
Set lgn1 = [ListeItems1bis].Cells(1, 1)
Set lgn2 = [ListeItems1bis].Cells(nblgn, 1)
ad1 = lgn1.Address()
ad2 = lgn2.Address()

ColTab = ad1 & ":" & ad2
End Function
 

JHA

XLDnaute Barbatruc
Re : Une fonction qui renvoie une colonne déterminée d'un tableau

Bonjour à tous,

Avec une seule plage nommée "ListeItems1"
=SIERREUR(DECALER($B$4;EQUIV(E5;ListeItems1;0);1);"")
le "1" decale de 1 la colonne "B"

JHA
 

Pièces jointes

  • Coïncider après Tri.xlsm
    21.7 KB · Affichages: 44
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix

Pièces jointes

  • Copie de Coïncider après Tri.xls
    53 KB · Affichages: 46
  • Copie de Coïncider après Tri.xls
    53 KB · Affichages: 53
  • Copie de Coïncider après Tri.xls
    53 KB · Affichages: 47

Magic_Doctor

XLDnaute Barbatruc
Re : Une fonction qui renvoie une colonne déterminée d'un tableau

Buenos días JHA,

Merci pour ta solution nettement plus élégante que celle que j'avais trouvée pour faire coïncider les masses volumiques avec leurs solvants respectifs. Je reprends donc ta formule en y incluant ma fonction.
Au fait, il y avait une petite erreur dans l'écriture de cette fonction que j'avais postée précédemment :

Function ColTab(tableau As Range, col As Byte) As String
'Renvoie l'adresse d'une colonne choisie dans un tableau

Dim nblgn As Integer, lgn1 As Range, lgn2 As Range
Dim ad1 As String, ad2 As String

nblgn =[ListeItems1bis].Rows.Count
Set lgn1 =[ListeItems1bis].Cells(1, col)
Set lgn2 =[ListeItems1bis].Cells(nblgn, col)
ad1 = lgn1.Address()
ad2 = lgn2.Address()

ColTab = ad1 & ":" & ad2
End Function

Bon après-midi.
 

Pièces jointes

  • Copia de Coïncider après Tri.xlsm
    20.9 KB · Affichages: 40
  • Copia de Coïncider après Tri.xlsm
    20.9 KB · Affichages: 42
  • Copia de Coïncider après Tri.xlsm
    20.9 KB · Affichages: 40

Magic_Doctor

XLDnaute Barbatruc
Re : Une fonction qui renvoie une colonne déterminée d'un tableau

Fonction un chouïa améliorée et bien écrite cette fois-ci :

Function ChxCol(tableau As Range, col As Byte) As String
'Renvoie l'adresse d'une colonne choisie dans un tableau
'- tableau : ume plage de cellules nommée ou pas
'- col : si col <> 0 ---> colonne de la plage "tableau" que l'on veut sélectionner
' si col = 0 ---> toute la plage "tableau" est sélectionnée
'Magic_Doctor

Dim nblgn As Integer, nbcol As Integer, col1 As Byte, col2 As Byte, lgn1 As Range, lgn2 As Range
Dim ad1 As String, ad2 As String

col1 = col: col2 = col

nblgn = tableau.Rows.Count
nbcol = tableau.Columns.Count

If col = 0 Then col1 = 1: col2 = nbcol

Set lgn1 = tableau.Cells(1, col1)
Set lgn2 = tableau.Cells(nblgn, col2)
ad1 = lgn1.Address()
ad2 = lgn2.Address()

ChxCol = ad1 & ":" & ad2
End Function
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16