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. 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
    1. 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. 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
        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