Sélection plage de données avec Colonnes Variable

Ewilem Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
Ewilem Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, ceci est mon premier post.
Je me présente, je m'appelle Izaya, et j'ai besoin d'aide pour un code VBA que je suis actuellement en train d'écrire.
Le but de ce code est de seléctionner une plage de donnée où les colonnes changeraient, avec deux lettres pour colonne.
Pour l'instant je n'essaye de séléctionner qu'une plage de donnée où les colonnes seraient définies par des variables. Je n'obtiens pour le moment que des erreurs, tout d'abord la 1004, puis la 13.
Mon code est ainsi :

1 Sub TestSelectionPlage()
2 Windows("DonneesTransfert.xlsm").Activate
3 Dim k As Integer 'Valeur ASCII COLONNE
4 Dim kk As Integer 'Valeur ASCII COLONNE
5 Dim MaPlage As Range
6 Dim l As Integer 'Valeur ASCII COLONNE
7 Dim ll As Integer 'Valeur ASCII COLONNE
8
9 Dim m As String 'Valeur en chaîne
10 Dim mm As String 'Valeur en chaîne
11
12 Dim q As String 'Valeur en chaîne
13 Dim qq As String 'Valeur en chaîne
14
15 k = 67 'Lettre C
16 kk = 72 'Lettre H
17 l = 67 'Lettre C
18 ll = 80 'Lettre P
19 m = Chr(k)
20 mm = Chr(kk)
21 q = Chr(l)
22 qq = Chr(ll)
23
24 Set MaPlage = Range(Range("A1").Offset(7, m & mm & 2), Range("A1").Offset(7, q & qq & 300))
25 MaPlage.Select
26 End Sub

L'erreur se trouve à la ligne 24.
Si quelqu'un pourrait me donner un élément de réponse, cela m'aiderait grandement..
Bonne journée,
Izaya

2 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

Je ne vois pas trop où tu veux en venir
Peut être quelque chose comme ça (les variables adr1 et adr2 te permettront de vérifier si les adresses sont correctes)

 Dim adr1 As String
 Dim adr2 As String
 adr1 = Cells(7 + 2, m & mm).Address
 adr2 = Cells(7 + 300, q & qq).Address
 Set MaPlage = Range(adr1 & ":" & adr2)

Cdlmnt
1
Ewilem Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Merci, c'est exactement ça !! :D
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour Izaya, bonjour le forum,

Pourquoi ne pas utiliser justement le numéro de la colonne comme variable avec le style de référence L1C1 ? Range("A1") devient Cells(1, 1) / Range("C7") devient Cells(7, 3). Ça te faciliterait les choses.
Je n'ai pas bien compris la plage que tu voulais sélectionner mais tu devrais y arriver en adaptant le code ci-dessous :

Sub TestSelectionPlage()
Dim O As Worksheet
Dim COL As Integer
Dim MaPlage As Range

'pour voir le numéro des colonnes : menu Fichier / Option / Formules / cocher_décocher : Style de référence L1C1

Windows("DonneesTransfert.xlsm").Activate
Set O = ActiveWorkbook.Worksheets("Feuil1") 'à adapter à ton cas
COL = 3 '=> colonne C ('à adapter à ton cas)
Set MaPlage = O.Range(O.Cells(7, COL), O.Cells(7, COL + 300))   '=>C7:KQ7 (à adapter à ton cas)
MaPlage.Select
End Sub

1
Ewilem Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
En fait, ce n'est que la première partie de mon problème. Dans la finalité, je fais un copié de cette plage pour la copier dans un autre excel, puis je déplace la plage du nombre de colonne que j'ai selectionné, et refait la même manipulation !
0