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.

A voir également:

4 réponses

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

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

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

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