Excel, sélection par macro sur critère

Fermé
Smash0065 - Modifié par Smash0065 le 7/05/2015 à 10:24
 Maurice - 7 mai 2015 à 13:05
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 1925 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 18 décembre 2024 692
Modifié par thev le 7/05/2015 à 11:11
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
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 1925 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 18 décembre 2024 692
7 mai 2015 à 11:45
Essaie comme variable "sélection" et non "selection".
Ceal dit, ma procédure fonctionne bien.

--
0
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 1925 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 18 décembre 2024 692 > Smash0065
7 mai 2015 à 12:23
oui.
0
C'est bizarre..

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