Du n° de colonne vers la lettre de la colonne

  • Initiateur de la discussion Initiateur de la discussion JCA06
  • 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 !

JCA06

XLDnaute Occasionnel
Bonjour le Forum,

J'ai encore besoin de votre aide.
Je récupére des données présentées dans des formats différents et je crée donc des codes pour aller récupérer les informations dont j'ai besoin là où elles se trouvent.
Je copie ensuite ces données dans une colonne de destination que je recherche à l'aide d'un USF.
Cette recherche me permet de récupérer le n° de colonne, exemple 45, que j'utilise ensuite avec des objets Cells().

Pour un second format, j'aimerai retrouver la lettre de la colonne de destination, soit AS pour la colonne 45, mais je ne sais pas comment convertir mon 45.
Je vous précise pourquoi je cherche cela, car il y a peut-être aussi une autre façon de procéder en gardant les Cells.
Dans mon second format, je pioche les informations dans un range non contigü, comme par exemple pour 10 valeurs à récupérer :
source.Activate
Range('D23😀24,D28😀30,D36😀38,D52,D54,D56,D58').Copy
Et j'aimerai utiliser la même syntaxe pour la destination :
trame.Activate
Range('D8😀15,D21😀25').PasteSpecial Paste:=xlPasteValues

Sachant que le 'D' est variable et que je n'arrive pas à faire cela avec des Cells...

Merci !
 
Bonjour Luc, bonjour Patrice,

Pour Luc : ça semble être effectivement un bon début, que j'ai déja un peu amélioré pour faire sauter les $ :
Str = Columns(45).Address(0, 0)
Cela me donne, avec mon exemple : AS:AS
Il me reste à en prendre le premier ou les deux premiers caractères suivant que ma valeur de colonne est inférieur ou pas à 26.

Donc :
i = 1
If DestCol > 26 Then i = 2
Str = Left(Columns(DestCol).Address(0, 0), i)

Et ceci me donne bien AS !

Pour Patrice, mon problème est que j'ai besoin de l'équivalent :
Range(('A1:A3,A5:A6') et je ne pense pas que cela passe en :
Range(Cells(1, 1), Cells(3, 1), Cells(5, 1), Cells(6, 1))
Mais tu sais peut-être comment le faire..

Merci pour votre aide.

Et bon week-end !
 
Bonsoir JCA06, Luki, patrice78,


JCA06, pour info, l'équivalent de :
Range('D23😀24,D28😀30,D36😀38,D52,D54,D56,D58').Copy
pourrait être :
Dim C As Integer
      C = 4           'Colonne 'D' = 4ième colonne

      Union(Range(Cells(23, C), Cells(24, C)), Range(Cells(28, C), Cells(30, C)), _
                  Range(Cells(36, C), Cells(38, C)), Cells(52, C), Cells(54, C), _
                  Cells(56, C), Cells(58, C)).Copy

D'autre part :
Dim T As String
      T = Cells(1, 45).Address(False, False)
      MsgBox Left(T, Len(T) - 1)
peut te permettre d'obtenir les caractères correspondants à la colonne 45 sans avoir à tester si tu dépasses ou non le nombre de lettres de l'alphabet.

Cela dit, Luki à raison, un exemple de ce que tu souhaites exactement aurait été le bienvenu....


Cordialement,
 
Bonjour Didier, Luc, Patrice, et bonjour le Forum,

Et merci pour votre aide !

C'est un peu gênant, pour moi, de mettre un exemple à ce stade, mais je pense pouvoir vous expliquer clairement.
Je dois alimenter une trame qui sert d'intérmédiaire entre des sources de format différents et la base de donnée proprement dite.
Cette étape intérmédiaire me sert de contrôle de différents éléments et comporte des données de la ligne 8 à 42, initialisées en recopiant les valeurs de la période précédente. La colonne de destination est recherchée à l'aide d'un USF et son numéro est ensuite mémorisé dans une variable DestCol.
Parmi les format de données que je récupére, je dois piocher à différents endroits les données qui alimenteront mes lignes 8 à 42 et j'aurais souhaité sélectionner des lots de range pour éviter les blocs de code de source vers destination.
Dans ma demande, j'avais différentes plages que je pouvais récupérer d'une feuille et copier tel quel, sans calcul, dans les lignes 8 à 15 et 21 à 24.

Mais je viens en fait de me rendre compte qu'on pourvait alimenter le presse papier par des plages multiples, mais pas la destination.
J'ai donc un peu triché de sorte que des données quelconques soient copiées dans les lignes 16 à 20 de façon à recréer une zone unique de destination, puis j'écraserai ces valeurs avec les données correctes...

Mais vous avez certainement plus propre à me proposer, comme une variable tableau qui sera vidée en une fois vers mes lignes 8 à 42... :whistle:

Bon d'accord, je m'y met dans ce sens... mais pas tout de suite car vous avez peut-être encore mieux à me proposer !

A plus.
 
- 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

A
Réponses
2
Affichages
796
Ananas94
A
N
Réponses
11
Affichages
2 K
NathalieQSE
N
M
Réponses
2
Affichages
739
Markotxe
M
Réponses
0
Affichages
2 K
T
  • Question Question
Réponses
9
Affichages
1 K
C
Réponses
3
Affichages
1 K
creal69360
C
F
Réponses
2
Affichages
1 K
flbcortex
F
Retour