Excel, sélection par macro sur critère

Smash0065 -  
 Maurice -
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. thev Messages postés 2005 Date d'inscription   Statut Membre Dernière intervention   721
     
    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
  2. Smash0065
     
    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
  3. thev Messages postés 2005 Date d'inscription   Statut Membre Dernière intervention   721
     
    Essaie comme variable "sélection" et non "selection".
    Ceal dit, ma procédure fonctionne bien.

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

      Tu dis que le code fonctionne chez toi avec tes modifications ?
      0
      1. thev Messages postés 2005 Date d'inscription   Statut Membre Dernière intervention   721 > Smash0065
         
        oui.
        0
    2. smash0065
       
      C'est bizarre..

      Merci pour ton aide !
      0
  4. Maurice
     
    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