VBA : Fonction appel et fonctionnement, éclaircissement
Résolu
NyectoD
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Dans mon code VBA, je calcule le nombre de colonnes d'un fichier puis je veux transformer ce nombre en lettres correspondant aux colonnes. Pour cela j'utilise la fonction proposée sur le site de Microsoft (https://docs.microsoft.com/en-us/office/troubleshoot/excel/convert-excel-column-numbers
J'appelle ensuite dans mon sub la fonction de cette manière :
J'ai aussi essayé de ne pas passer par la variable Lettr et d'intégrer directement l'appel de fonction dans mon test :
Ma variable DernColonne étant un Integer, pas de soucis de ce côté, je n'ai juste pas le renvoi des lettres voulues et pas de renvoi de lettre tout cours en fait.
Je me demande si j'ai bien déclaré ma fonction et si elle est correctement appelée. Elle se trouve au début de mon code avant le Private Sub d'initialisation de mon UserForm
Je ne sais pas si je suis très clair ? Je reste à disposition pour des précisions.
Merci d'avance.
Dans mon code VBA, je calcule le nombre de colonnes d'un fichier puis je veux transformer ce nombre en lettres correspondant aux colonnes. Pour cela j'utilise la fonction proposée sur le site de Microsoft (https://docs.microsoft.com/en-us/office/troubleshoot/excel/convert-excel-column-numbers
Function ConvertToLetter(iCol As Integer) As String Dim iAlpha As Integer Dim iRemainder As Integer iAlpha = Int(iCol / 27) iRemainder = iCol - (iAlpha * 26) If iAlpha > 0 Then ConvertToLetter = Chr(iAlpha + 64) End If If iRemainder > 0 Then ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64) End If End Function
J'appelle ensuite dans mon sub la fonction de cette manière :
Lettr = ConvertToLetter(DernColonne)
J'ai aussi essayé de ne pas passer par la variable Lettr et d'intégrer directement l'appel de fonction dans mon test :
Do Until Not IsEmpty(xlBook.Sheets("Feuil1").Range(ConvertToLetter(DernColonne) & DernLigne).Value)
Ma variable DernColonne étant un Integer, pas de soucis de ce côté, je n'ai juste pas le renvoi des lettres voulues et pas de renvoi de lettre tout cours en fait.
Je me demande si j'ai bien déclaré ma fonction et si elle est correctement appelée. Elle se trouve au début de mon code avant le Private Sub d'initialisation de mon UserForm
Je ne sais pas si je suis très clair ? Je reste à disposition pour des précisions.
Merci d'avance.
A voir également:
- Vba convert cells to range
- Qwerty to azerty - Guide
- Starlink direct to cell prix - Accueil - Opérateurs & Forfaits
- Bat to exe converter - Télécharger - Édition & Programmation
- Out of range écran - Forum Ecran
- Wfp to mp4 - Forum Accessoires & objets connectés
4 réponses
Bonjour
Tu as 2 manières pour désigner une cellule: "range" que tu as utilisé et qui t'obllge à convertir la colonne en lettre
ou
Cells(ligne, colonne)
dans ton cas
Cells(DernLigne,DernColonne)
Michel
Tu as 2 manières pour désigner une cellule: "range" que tu as utilisé et qui t'obllge à convertir la colonne en lettre
ou
Cells(ligne, colonne)
dans ton cas
Cells(DernLigne,DernColonne)
Michel
Bonjour,
et si tu as toujours besoin des lettres des colonnes :
Ils ne savent pas faire simple des fois chez MS
eric
et si tu as toujours besoin des lettres des colonnes :
col = 28 lettreCol = Split(Cells(1, col).Address, "$")(1)
Ils ne savent pas faire simple des fois chez MS
eric
Tout d'abord merci à vous deux.
Michel, j'ai essayé de modifier mon test en tenant compte de ta réponse mais ça ne semble pas fonctionner dans mon code. Il faudra que je retouche.
Eric, peux tu m'expliquer comment fonctionne ta ligne, je ne comprends pas tout...
Michel, j'ai essayé de modifier mon test en tenant compte de ta réponse mais ça ne semble pas fonctionner dans mon code. Il faudra que je retouche.
Eric, peux tu m'expliquer comment fonctionne ta ligne, je ne comprends pas tout...
J'ai corrigé le problème et je me suis servi de la réponse d'Eric, en effet, j'ai besoin des lettres des colonnes pour plus tard.
Sa solution l'emporte donc.
Encore une fois merci et : Résolu !
Sa solution l'emporte donc.
Encore une fois merci et : Résolu !
comment fonctionne ta ligne
Tu as sans doute trouvé depuis :
Avec Cells(1, col).Address tu te fabriques une référence en utilisant le n° de colonne dont tu récupères l'addresse => $AB$1
Il ne reste plus qu'à découper avec Split() pour récupérer les lettres désignant cette colonne.
Et ta fonction tu devrais essayer de la mettre dans un module Standard.
eric
Tu as sans doute trouvé depuis :
Avec Cells(1, col).Address tu te fabriques une référence en utilisant le n° de colonne dont tu récupères l'addresse => $AB$1
Il ne reste plus qu'à découper avec Split() pour récupérer les lettres désignant cette colonne.
Et ta fonction tu devrais essayer de la mettre dans un module Standard.
eric