VBA sous Excel

Résolu
Bonjour,

Je souhaiterai pouvoir capter un range dont les limites ont été défini
par une recherche dans une table via une boucle DO .... LOOP UNTIL
dim MaPlage as range
dim i,nomatch integer
i = 1
nomatch=15
Do
i = i + 1
Loop Until Worksheets("FIND").Range("A" & i).Value = nomatch
selcellule = """" & "A" & CStr(i) & ":" & "H" & CStr(i) & """" 'Range de référence dans FIND

Pas problème, la variable selcellule comporte bien la valeur range à sélectionner.
Par exemple "A3:H3"
mais quand je souhaite placer le contenu dans une variable ou une autre table ou ou un autre endroit dans la table; je coince
voici ce que j'ai mis
MaPlage = Worksheets("FIND").Range(selcellule).Value

Pouvez-vous m'aider SVP
Merci
PL

3 réponses

  1. Contributeur
    Bonjour,

    Je vois deux problèmes dans ce code :
    D'abord il ne faut pas encadrer l'adresse par des "" et ensuite pour affecter un Range il faut employer l'instruction set.

    D'ou le code suivant a essayer :

    Dim MaPlage As Range
    Dim i, nomatch As Integer
    Dim selcellule As String
    i = 1
    nomatch = 15
    Do
    i = i + 1
    Loop Until Worksheets("FIND").Range("A" & i).Value = nomatch
    selcellule = "A" & CStr(i) & ":" & "H" & CStr(i) 
    Set MaPlage = Worksheets("FIND").Range(selcellule)


    A+
    1. Bonjour,

      Et comme ceci :

      Option Explicit
      
      Sub Test()
      
          Dim MaPlage As Range
          Dim i As Integer, nomatch As Integer
          Dim selCellule As String
      
          i = 1
          nomatch = 15
      
          Do
              i = i + 1
          Loop Until Worksheets("FIND").Range("A" & i).Value = nomatch
      
          selCellule = "A" & i & ":" & "H" & i   'Range de référence dans FIND
      
          Set MaPlage = Worksheets("FIND").Range(selCellule)
      
      End Sub
      '
      


      Cdt

      Lupin
      1. Contributeur
        Salut,

        Bingo dans la même minute et en plus on est d'accord...

        Cdlt
      2. re:

        en effet, sauf pour la déclaration de la variable i !

        Tel que décrit ici :

        Dim i, nomatch As Integer

        i est déclaré de façon implicite en type Variant.

        ex.:

        Sub Test()
        
            Dim i, j As Integer
            Dim Plage As String
            
            Plage = "A1:F3"
            Set i = Range(Plage)
            Set j = Range(Plage) ' Plante sur cette ligne
            
        End Sub
        


        Cdt
      3. Contributeur
        Bien vu...

        A+
    2. Bonsoir,
      Je vous remercie tous pour vos réponses.
      Je vais essayer en fin de soirée.
      A+

      Pascal