Excel, sélection par macro sur critère
Smash0065
-
Maurice -
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 :
La valeur de cell est : "AR1,AR8,AR12,....AR1278"
Si je tape
Avez-vous une idée ?
Merci d'avance pour votre aide.
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
-
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édureSub 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
-- -
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 -
Essaie comme variable "sélection" et non "selection".
Ceal dit, ma procédure fonctionne bien.
-- -
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