Selection dans lignes filtrées

Le
Alf
Bonjour à tous,

Mon problème:
J'ai un classeur avec beaucoup de lignes et de colonnes de données.
Je filtre certaines lignes.
A la souris, je sélectionne, sur une colonne (seulement) quelconque et=
de manière contiguë, des cellules sur plusieurs lignes (sél=
ection verticale donc).

Je voudrais pouvoir récupérer le contenu des cellules en surbrill=
ance sélectionnées, pour les copier ailleurs.

C'est un peu compliqué pour moi
Merci pour votre aide
Alf
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JièL
Le #26454361
Hello,
vielle version d'Excel ?
Les récentes font la sélection des cellules visibles seulement.
Une fois les cellules (de la colonne) sélectionnées, F5, Cellules,
Cellules visibles seulement, OK
y'a plus qu'a copier
--
JièL Sel et xion
Le 02/12/2017 à 10:21, Alf a écrit :
Bonjour à tous,
Mon problème:
J'ai un classeur avec beaucoup de lignes et de colonnes de données.
Je filtre certaines lignes.
A la souris, je sélectionne, sur une colonne (seulement) quelconque et de manière contiguë, des cellules sur plusieurs lignes (sélection verticale donc).
Je voudrais pouvoir récupérer le contenu des cellules en surbrillance sélectionnées, pour les copier ailleurs.
C'est un peu compliqué pour moi...
Merci pour votre aide
Alf
Michd
Le #26454367
Bonjour,
Un exemple de code : Cette procédure copie toutes les cellules visibles
seulement de la plage de cellules A1:Ax de la feuil1 vers la plage de
cellules D1:Dx de la feuil2. À toi d'adapter le nom des feuilles et de la
plage à copier et la destination de la copie
La copie comprend le format de la plage de cellules + leurs valeurs.
'------------------------------------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Rows)
.SpecialCells(xlCellTypeVisible).Copy
Worksheets("Feuil2").Range("D1")
End With
End With
End Sub
'------------------------------------------------
Pour ne copier que le contenu des cellules vers la plage de destination :
'------------------------------------------------
Sub test()
Dim T As Variant
With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Rows)
t = .SpecialCells(xlCellTypeVisible)
End With
End With
With Worksheets("Feuil2")
.Range("D1").Resize(UBound(t, 1), UBound(t, 2)) = t
End With
End Sub
'------------------------------------------------
MichD
Michd
Le #26454383
Mais ce que je voudrais c'est uniquement le contenu des cellules visibles
que j'ai sélectionnées (mise en surbrillance d'une plage parmi les cellules
visibles)...
Plus ardu non...!
***** En supposant que tu as fait la sélection manuelle et que tu veuilles
copier seulement les cellules visibles de cette sélection, tu peux utiliser
ceci :
Dans le bout de code suivant, l'objet "Selection" est un terme générique qui
peut désigner n'importe quel objet dans la feuille active (celle affichée à
l'écran dans le classeur). Ce peut être une plage de cellules, un graphe, un
checkbox, un bout de commande, etc. il s'agit de faire un petit test au
début de la procédure afin d'effectuer la copie seulement si le type d'objet
que représente "Selection" est de type "range".
'-----------------------------------------
Sub test()
With Worksheets("Feuil1")
If TypeName(Selection) = "Range" Then
Selection.SpecialCells(xlCellTypeVisible).Copy _
Worksheets("Feuil1").Range("H1")
End If
End With
End Sub
'-----------------------------------------
MichD
Michd
Le #26454414
Je crois avoir trouvé
'-------------------
dim c as range
dim Cont as string
For Each c In Selection.SpecialCells(xlCellTypeVisible)
Cont=c.value
Next c
'--------------------
Cela te semble correct MichD ?
***** Cette boucle est possible. Cependant, la variable "Cont" va prendre la
valeur de chacune des cellules à tour de rôle et tu n'auras à la fin, qu'une
seule valeur dans la "Cont" qui sera égale à la dernière cellule de la
plage. Est-ce bien utile?
MichD
Publicité
Poster une réponse
Anonyme