VBA : Fonction appel et fonctionnement, éclaircissement [Résolu/Fermé]
Signaler
NyectoD
eriiic
- Messages postés
- 23
- Date d'inscription
- mercredi 2 avril 2014
- Statut
- Membre
- Dernière intervention
- 6 juin 2014
eriiic
- Messages postés
- 23821
- Date d'inscription
- mardi 11 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 28 janvier 2021
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 : Fonction appel et fonctionnement, éclaircissement
- VBA : Fonction appel et fonctionnement, éclaircissement ✓ - Forum - Excel
- Vba fonction find - Conseils pratiques - Visual Basic
- Vba fonction split ✓ - Forum - VB / VBA
- VBA - Fonction NB.SI_Plus - Conseils pratiques - Excel
- VBA - Fonction qui retourne la couleur active d'une MFC - Conseils pratiques - Excel
4 réponses
michel_m
- Messages postés
- 16376
- Date d'inscription
- lundi 12 septembre 2005
- Statut
- Contributeur
- Dernière intervention
- 25 janvier 2021
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
eriiic
- Messages postés
- 23821
- Date d'inscription
- mardi 11 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 28 janvier 2021
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
NyectoD
- Messages postés
- 23
- Date d'inscription
- mercredi 2 avril 2014
- Statut
- Membre
- Dernière intervention
- 6 juin 2014
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...
NyectoD
- Messages postés
- 23
- Date d'inscription
- mercredi 2 avril 2014
- Statut
- Membre
- Dernière intervention
- 6 juin 2014
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 !
eriiic
- Messages postés
- 23821
- Date d'inscription
- mardi 11 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 28 janvier 2021
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