code pour dépasser la colonne Z

Batiscaf

XLDnaute Occasionnel
Bonjour tout le monde,

Aujourd'hui mon problème est assez simple mais j'ai un trou de mémoire est je trouve pas comment retomber sur l'astuce dans les archives du forum.

Voilà le code que j'ai écrit :

c = Range('IV1').End(xlToLeft).Column
titre = 'N° PB'
For i = 15 To c
L1 = Chr$(Asc('A') - 1 + i)
If Trim$(Range(L1 & '1')) = titre Then
Range('A1:IV' & nblig).Sort Key1:=Range(L1 & '1'), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.AutoFilter Field:=i, Criteria1:='<>'
Exit For
End If
Next i


Je suis bloqué dès que ma colonne 'N° PB' se trouve après la colonne Z puisque la valeur de L1 devient '[' au lieu de 'AA'.

Sans doute vous rappelez vous l'astuce pour récupérer les noms de colonnes à partir de 'AA' et +

Merci de votre aide.

Batiscaf.
 

pat1545.

XLDnaute Accro
Salut,

voici une tite modification , à toi de voir :
il doit y avoir mieux mais moi je n'ai que ça sous la main en ce moment ;-)
....
For i = 15 To c
Cells(1, i).Activate
L1 = Left(ActiveCell.Address(0, 0), (ActiveCell.Column < 27) + 2)
....




Patrick
 

Humansoft

XLDnaute Occasionnel
Bonsoir,

J'ai fait une petite moulinette un jour pour palier à ce genre de déconvenue.
La numéraotation des Lettres va de 65 à 91 soit de A à Z
Si tu passes ce chiffre de 91, le caractères dont tu parles apparait et crée une erreur car le code attends AA et non [

c = Range('IV1').End(xlToLeft).Column
titre = 'N° PB'
For i = 15 To c

' Voila la façon de contourner le souci
if (Asc('A') - 1 + i) > 91 then
L1 = 'A' & Chr$(Asc('A') - 26 + i)
else
L1 = Chr$(Asc('A') - 1 + i)
endif

If Trim$(Range(L1 & '1')) = titre Then
Range('A1:IV' & nblig).Sort Key1:=Range(L1 & '1'), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.AutoFilter Field:=i, Criteria1:='<>'
Exit For
End If
Next i

Bonne utilisation

Vincent
 

Batiscaf

XLDnaute Occasionnel
Bonjour Humansoft, pat1545, le forum,


Et bien les 2 solutions me vont.

Celle de pat1545 : ok du premier coup.

Celle de Humansoft : il a fallu que je rentre ce code pour que ma macro fonctionne :

If (Asc('A') - 1 + i) > 90 Then
L1 = 'A' & Chr$(Asc('A') - 27 + i)
Else
L1 = Chr$(Asc('A') - 1 + i)
End If


Merci à tous les 2.

Batiscaf.
 

Discussions similaires

Réponses
8
Affichages
681
Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 492
Messages
2 088 902
Membres
103 982
dernier inscrit
krakencolas