Sélection plage de données avec Colonnes Variable

Fermé
Ewilem Messages postés 5 Date d'inscription vendredi 7 septembre 2018 Statut Membre Dernière intervention 17 septembre 2018 - 7 sept. 2018 à 13:00
Ewilem Messages postés 5 Date d'inscription vendredi 7 septembre 2018 Statut Membre Dernière intervention 17 septembre 2018 - 7 sept. 2018 à 14:40
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 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
Modifié le 7 sept. 2018 à 13:55
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 vendredi 7 septembre 2018 Statut Membre Dernière intervention 17 septembre 2018
7 sept. 2018 à 14:07
Merci, c'est exactement ça !! :D
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
7 sept. 2018 à 14:12
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 vendredi 7 septembre 2018 Statut Membre Dernière intervention 17 septembre 2018
7 sept. 2018 à 14:40
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