Sélection plage de données avec Colonnes Variable

Ewilem Messages postés 5 Statut Membre -  
Ewilem Messages postés 5 Statut Membre -
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

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. Ewilem Messages postés 5 Statut Membre
       
      Merci, c'est exactement ça !! :D
      0
  2. ThauTheme Messages postés 1564 Statut Membre 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
    1. Ewilem Messages postés 5 Statut Membre
       
      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