Excel, sélection par macro sur critère

Bonjour,

Je souhaite sélectionner les cellules dont le contenu est égal à 1. J'ai donc créé cette macro mais la commande Range de fin renvoie une erreur.

Voici mon code :
Sub selection_cl()
Dim cell
Dim col
Dim selection
col = "AR"
For i = 8 To 1319
    cell = col & i
    If Range(cell).Value = "1" Then
        If selection = "" Then
            selection = cell
        Else
            selection = selection & "," & cell
        End If
    End If
    i = i + 1
Next
guil = """"
sel = guil & selection & guil
MsgBox guil
MsgBox sel
Range(sel).Select

End Sub


La valeur de cell est : "AR1,AR8,AR12,....AR1278"

Si je tape
Range("AR8,AR12,AR1278").Select
Alors la sélection fonctionne (aucune erreur).

Avez-vous une idée ?

Merci d'avance pour votre aide.

4 réponses

  1. Bonjour
    je pense a une macro comme ca

    Sub testBoucle()
    Col = "AR"
       For L = 8 To 1319
           If Range(Col & L).Value = "1" Then
                   Sel = Sel & Col & L & ","
           End If
       Next
    Sel = Left(Sel, Len(Sel) - 1)
       Range(Sel).Select
    End Sub
    

    A toi de voir

    A+
    Maurice
    0
    1. Essaie comme variable "sélection" et non "selection".
      Ceal dit, ma procédure fonctionne bien.

      --
      0
      1. J'ai essayé mais cela ne fonctionne toujours pas :/

        Tu dis que le code fonctionne chez toi avec tes modifications ?
        0
      2. C'est bizarre..

        Merci pour ton aide !
        0
    2. Bonjour thev,

      Merci pour votre réponse.

      J'ai tenté de modifier les nom des variables et j'ai corrigé quelques erreurs dans mon code mais l'erreur survient toujours...

      Voici le nouveau code :
      Sub selection_cl()
      Dim cellule
      Dim colonne
      Dim selection
      Dim selection_fin
      Dim guil
      colonne = "AR"
      For i = 8 To 1319
          cellule = colonne & i
          If Range(cellule).Value = "1" Then
                  selection = selection & cellule & ","
          End If
          If i = 1319 Then
              selection = selection & cellule
          End If
      Next
      i = i + 1
      guil = """"
      selection_fin = guil & selection & guil
      MsgBox guil
      MsgBox selection_fin
      Range(selection_fin).Select
      
      End Sub
      
      
      0
      1. je pense tout d'abord qu'il faut éviter d'utiliser comme variables des mots réservés dans VBA : cell, selection. Les remplacer par exemple, par cellule et sélection.

        et pour mémo, optimisation de la procédure
        Sub selection_cl()
        
        Dim cellule As Range
        Dim sélection As Range
        Set plage = Range("AR8:AR1319")
        For Each cellule In plage.Cells
            If cellule.Value = "1" Then
                If sélection Is Nothing Then Set sélection = cellule Else: Set sélection = Union(sélection, cellule)
            End If
        Next
        sélection.Select
        
        End Sub


        --
        0