Renvoi de l'adresse d'une colonne pour formule VLOOKUP

  • Initiateur de la discussion Initiateur de la discussion Taroohn
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Taroohn

XLDnaute Nouveau
Bonjour à tous,

Pour l'une de mes procédure, je dois écrire dans une plage de cellule une fonction VLookUp dont les arguments dépendent de la cellule dans laquelle la fonction s'inscrit.

J'ai donc utilisé cette boucle :
Code:
    For i = 2 To max_table_lines
        For j = 4 To 68
            Cells(i, j).Formula = "=" & "VLOOKUP($C" & i & ";Full_data_projects_conso!$C:$BO;" & j & "$1;FALSE)"
        Next
    Next

i représente l'index des lignes, et j celui des colonnes. Le problème est que le "j" renvoie le numéro de la colonne, et la formule n'est ainsi pas valable lorsqu'elle s'inscrit. Comment pourrais-je transformer ce numéro de colonne en la lettre qui lui correspond?

J'ai vu d'autres post qui se rapportent au problème sur le forum mais aucun ne permettant de faire cette translation au sein même d'une formule.

Merci d'avance

Taroohn
 
Re : Renvoi de l'adresse d'une colonne pour formule VLOOKUP

Bonjour Taroohn,

2 propositions :

Une simple :
Code:
Function ColToLet$(ByVal x&)
    ColToLet = Right(Left(Cells(1, x).Address, Len(Cells(1, x).Address) - 2), Len(Cells(1, x).Address) - 3)
End Function

une autre 😉:
Code:
Function ColToLet$(ByVal x&)
'donne la combinaison de lettres du n° de colonne entré
    Select Case x
        Case Is <= 26
            ColToLet = Chr(64 + x Mod 27)
        Case Is <= 702
            x = x - 26
            ColToLet = Chr(64 + (Int((x - 1) / 26) + 1) Mod 27)
            x = x - 26 * (Int((x - 1) / 26))
            ColToLet = ColToLet & ColToLet(x)
        Case Is <= 16384
            x = x - 702
            ColToLet = Chr(64 + (Int((x - 1) / 676) + 1) Mod 27)
            x = x - 676 * (Int((x - 1) / 676)) + 26
            ColToLet = ColToLet & ColToLet(x)
    End Select
End Function

Cordialement

KD
 
Re : Renvoi de l'adresse d'une colonne pour formule VLOOKUP

Salut Taroohn et le forum
Code:
    For i = 2 To max_table_lines
        For j = 4 To 68
            Cells(i, j).Formula = "=" & "VLOOKUP($C" & i & ";Full_data_projects_conso!$C:$BO;" & Columns(j).Address & "$1;FALSE)"
        Next
    Next
Il faut peut-être mettre la feuille.
A+
 
Re : Renvoi de l'adresse d'une colonne pour formule VLOOKUP

Bonjour

Je te conseille de travailler avec le formulation LC : prend l'enregistreur macro et crée ta formule, tu verras ensuite comment utiliser cette notation qui permet de travailler en relatif.


Edit : bing. Boujour à Kendev et Gorfael
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
471
Réponses
5
Affichages
565
Réponses
7
Affichages
797
Réponses
12
Affichages
989
Retour