Coller Cellule dans colonne filtrée

  • Initiateur de la discussion Initiateur de la discussion Orcrist08
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

O

Orcrist08

Guest
Bonjour,

j'ai un fichier sur lequel j'ai deux feuilles.
Feuille 1 où j'ai des valeurs
Feuille 2 où j'ai plusieurs colonnes avec des données.

Je souhaite sur ma Feuille 2 faire un filtre sur mes colonnes et choisir dans la colonne "classe" la valeur "A"
Une fois mes lignes sélectionnées je souhaite coller mes valeurs en face de ces mêmes lignes.

Mon souci est qu'excel colle les valeurs en prenant compte des lignes cachées.

Existe-t-il moyen de coller uniquement sur les lignes visibles ?

J'ai déjà essayé avec F5 et "cellules visibles uniquement" mais sans succès.

Merci pour votre aide
 

Pièces jointes

Re : Coller Cellule dans colonne filtrée

Bonsoir Orcrist08, bienvenue sur XLD,

Placez cette macro dans le code de Feuil2 (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target <> "Valeur" Then Exit Sub 'adapter l'en-tête
Dim n&, c As Range
Cancel = True
Application.ScreenUpdating = False
Target(2).Resize(Rows.Count - Target.Row).ClearContents 'RAZ
n = 2
'Feuil1 est le CodeName de la feuille
For Each c In Feuil1.Range("A2", Feuil1.Cells(Rows.Count, 1).End(xlUp)(2))
  While Target(n).EntireRow.Hidden
    Target(n) = ""
    n = n + 1
  Wend
  Target(n) = c
  n = n + 1
Next
End Sub
Fichier joint.

Edit : ajouté Target(n) = "" car la RAZ n'efface pas les cellules masquées.

Bonne nuit.
 

Pièces jointes

Dernière édition:
Re : Coller Cellule dans colonne filtrée

Bonjour et merci pour cette 1ere réponse.

ce que je n'ai pas précisé c'est que les données de la cellule "valeur" de la feuille 2 ne doivent pas être effacées.

Je rentre des valeurs dans la feuille 1, je choisis une classe "a" dans la feuille 2 et je copie de la feuille 1 vers la feuille 2.
Je change les données dans la feuilles 1, je choisis la classe "f" dans la feuille 2 et je copie de la feuille 1 vers la feuille 2.
etc...

Merci pour votre aide
 
Re : Coller Cellule dans colonne filtrée

Bonjour Orcrist08, le forum,

ce que je n'ai pas précisé c'est que les données de la cellule "valeur" de la feuille 2 ne doivent pas être effacées.

Eh bien ce n'est pas difficile, n'effacez rien :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target <> "Valeur" Then Exit Sub 'adapter l'en-tête
Dim derlig&, n&, c As Range
Cancel = True
Application.ScreenUpdating = False
derlig = Cells.Find("*", , xlValues, , xlByRows, xlPrevious).Row
n = 2
'Feuil1 est le CodeName de la feuille
For Each c In Feuil1.Range("A2", Feuil1.Cells(Rows.Count, 1).End(xlUp)(2))
  While Target(n).EntireRow.Hidden
    n = n + 1
    If n > derlig Then Exit Sub 'sécurité
  Wend
  Target(n) = c
  n = n + 1
Next
End Sub
Par sécurité j'ai ajouté la variable derlig, numéro de la dernière ligne visible.

Fichier (2).

Bonne journée.
 

Pièces jointes

Re : Coller Cellule dans colonne filtrée

Re,

Dans ce fichier (3) j'ai ajouté le test If c <> "" Then :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target <> "Valeur" Then Exit Sub 'adapter l'en-tête
Dim derlig&, n&, c As Range
Cancel = True
Application.ScreenUpdating = False
derlig = Cells.Find("*", , xlValues, , xlByRows, xlPrevious).Row
n = 2
'Feuil1 est le CodeName de la feuille
For Each c In Feuil1.Range("A2", Feuil1.Cells(Rows.Count, 1).End(xlUp)(2))
  If c <> "" Then
    While Target(n).EntireRow.Hidden
      n = n + 1
      If n > derlig Then Exit Sub 'sécurité
    Wend
    Target(n) = c
    n = n + 1
  End If
Next
End Sub
A+
 

Pièces jointes

Re : Coller Cellule dans colonne filtrée

Re,

Merci encore pour ta rapidité et ton efficacité.
ça fonctionne super.

Penses-tu qu'il est possible de faire la même chose mais en ayant un filtre sur les valeurs de la feuille 1 et plutot que d'avoir une sélection automatique des données de la feuille 1, il y ait une sélection de la plage avec la souris (données qui se suivent mais qui ne comment pas forcément à la ligne 2)

Je choisis d'abord des valeurs dans la feuille 1 avec un filtre classique, je lance ta macro et je choisis la plage à copier.

Merci pour ton aide
 
Re : Coller Cellule dans colonne filtrée

Re,

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target <> "Valeur" Then Exit Sub 'adapter l'en-tête
Dim derlig&, n&, c As Range
Cancel = True
Application.ScreenUpdating = False
derlig = Cells.Find("*", , xlValues, , xlByRows, xlPrevious).Row
n = 2
On Error Resume Next
'Feuil1 est le CodeName de la feuille
For Each c In Feuil1.Range("A2", Feuil1.Cells(Rows.Count, 1).End(xlUp)(2).SpecialCells(xlCellTypeVisible))
  If c <> "" Then
    While Target(n).EntireRow.Hidden
      n = n + 1
      If n > derlig Then Exit Sub 'sécurité
    Wend
    Target(n) = c
    n = n + 1
  End If
Next
End Sub
A+
 
Re : Coller Cellule dans colonne filtrée

Re,

Je n'avais pas eu le temps de tester ce matin et il y avait une erreur.

Une parenthèse ) était mal placée sur la ligne For Each c...

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target <> "Valeur" Then Exit Sub 'adapter l'en-tête
Dim derlig&, n&, c As Range
Cancel = True
Application.ScreenUpdating = False
derlig = Cells.Find("*", , xlValues, , xlByRows, xlPrevious).Row
n = 2
On Error Resume Next
'Feuil1 est le CodeName de la feuille
For Each c In Feuil1.Range("A2", Feuil1.Cells(Rows.Count, 1).End(xlUp)(2)).SpecialCells(xlCellTypeVisible)
  If c <> "" Then
    While Target(n).EntireRow.Hidden
      n = n + 1
      If n > derlig Then Exit Sub 'sécurité
    Wend
    Target(n) = c
    n = n + 1
  End If
Next
End Sub
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
257
  • Question Question
Microsoft 365 Formule Excel
Réponses
4
Affichages
338
Retour