Colonne excel de chiffres en lettres

Contenu du snippet

Avez-vous essayer d'imprimer une zone dont vous ne connaissez pas les limites au départ de votre programme en utilisant les références d'adresse en "LR" ou en Cells(X,Y), ou Range(Cells(x,y)..... ??
Pour ma part je n'ai jamais réussi car, à priori, il faut absolument une adresse de début et de fin en mode absolue et le "$" est obligatoire.
C'est de la forme :
ActiveSheet.PageSetup.PrintArea = "$A$15:$BD$56"
J'ai donc cherché un moyen qui me permette de determiner une colonne de départ et de fin de l'impression, en fonction de critères de valeurs ou de formats qui seront trouvés par programmation, (et la même chose pour les lignes).

Source / Exemple :


Public ColAlphaDeb, ColAlphaFin As String
Public LettreUne, LettreDeux As String
Public ColNumEnCours As Integer
Public Resultat, Reste As Integer
Public LigDeb, LigFin As Integer

Sub TestPrintAera()

'   la ColNumEnCours ( 1ère et dernière colonne) est à determiner dans le cours du pgm
'   idem pour la LigDeb et la LigFin
'   Les valeurs sont données arbitrairement pour l'exemple

    LigDeb = 10
    LigFin = 64
    
    ColNumEnCours = 34     	'***** 1ère colonne à imprimer

    ColAlpahDeb = SelectionZoneAImprimer(ColAlpha)
                        	'***** ColAlphaDeb contient la valeur en lettre(s)
                        	'***** de l'adresse de la première colonne
    
    ColNumEnCours = 59     	'***** dernière colonne à imprimmer

    ColAlphaFin = SelectionZoneAImprimer(ColAlpha)
                        	'***** ColAlphaFin contient la valeur en lettre(s)
                        	'***** de l'adresse de la dernière colonne

'   ActiveSheet.PageSetup.PrintArea = "$" & ColAlphaDeb & "$" & LigDeb & ":" _
				      "$" & ColAlphaFin & "$" & LigFin    
End Sub

Function SelectionZoneAImprimer(ColAlpha) As String

'****** Initialisation des deux variables lettre
    LettreUne = ""
    LettreDeux = ""

'****** Je considère être dans la zone des colonnes à une lettre
    Resultat = ColNumEnCours

'****** Mais je vérifie quend même

    If ColNumEnCours > 26 Then	
        Resultat = ColNumEnCours \ 26  	'***** Division du numéro de colonne
                                    	'***** par le nombre de lettres de l'alphabet
                                    	'***** pour trouver la 1ère lettre
                                    
        Reste = ColNumEnCours Mod 26   	'***** Le reste de cette division donnera
                                    	'***** la 2ème lettre
                                    	
        If Reste = 0 Then           	'***** Si le reste vaut 0 : la colonne est à la
                                    	'***** frontière entre 2 alphabets donc il faut
                                    	'***** revenir en arrière d'un caractère pour
                                    	'***** la 1ère lettre et forcer la lettre "Z"
            Resultat = Resultat - 1
            Reste = 26

        End If

        LettreDeux = Chr(Reste + 64) 	'***** La 2ème lettre est facile à trouver
    End If
    
    LettreUne = Chr(Resultat + 64)  	'***** La 1ère lettre est seulement déterminée
                                    	'***** maintenant car nous sommes aussi au résultat de
                                    	'***** la première condition
                                    
    SelectionZoneAImprimer = LettreUne & LettreDeux
End Function

Conclusion :


Commentaires bienvenus. Merci

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.