Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

macro selection données filtrées

  • Initiateur de la discussion Initiateur de la discussion yichaam
  • 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 !

Y

yichaam

Guest
Bonjour à toute la communauté Excel Download

Il y a quelques semaines on m'a aidé sur une macro permettant de copier coller des cellules sur une autre feuille, j'ai utilisé cette macro dans divers documents, seulement un de mes travaux demande une petite modification. Je m'explique:

la macro selectionne l'ensemble des cellules présentes avec ce code:

For n = 14 To Sheets("etape1").Range("A300").Row

Donc, elle copiera les 300 cellules, cependant les données que je veux copier coller sont souvent filtrées, quel changement appliquer dans ce code pour qu'il ne selectionne que les lignes apparaissant effectivement sur la feuille sans copier coller les données cachées par le filtre??

Merci d'avance
 
Re : macro selection données filtrées

Bonjour yichaam,

Peut-être avec
Code:
 If Cells(n, 1).Height <> 0 Then

Mais l'extrait de code est un peu court pour t'aider.
Peux-tu en donner davantage STP.

@+
 
Dernière édition:
Re : macro selection données filtrées

Salut,

Une autre proposition :
Code:
For i = 2 To [COLOR=black]300
[/COLOR]    If Rows(i).Hidden = False Then
        [COLOR=seagreen]'ton code de copie
[/COLOR]    End If
Next i


De plus, juste une petite remarque sur le code que tu donnes For n = 14 To Sheets("etape1").Range("A300").Row
Je ne vois pas l'interet du Range("A300").Row puisque la ligne est 300, tu le définit dans ton Range

@+
 
Re : macro selection données filtrées

Bonjour Sergio

Merci pour le code mais j'ai beau le travailler dans tous les sens je n'arrive pas à le faire tourner:

Voici ma macro complète, elle est un peu spéciale car permet plusieurs actions (copier coller à la suite, recopie en cas d'erreur sans faire de doublons en fonction de certains critéres...), je ne veux absolument pas modifier le reste car elle est vraiment sur mesure mais le seul hic est dans la toute première selection (il ne faut selectionner que les données fliltrées).

Il y a d'autre solutions sur le forum mais elles demandent le changement complet de ma macro

Voici l'ensemble du code:

Sub recorde1()
For n = 14 To Sheets("etape1").Range("A300").Row
mag = Sheets("etape1").Range("A" & n)
code = Sheets("etape1").Range("B" & n)
marq = Sheets("etape1").Range("C" & n)
axe = Sheets("etape1").Range("D" & n)
CA = Sheets("etape1").Range("E" & n)
CAP = Sheets("etape1").Range("F" & n)
ind = Sheets("etape1").Range("G" & n)
For m = 2 To Sheets("record2").Range("A65536").End(xlUp).Row
mage = Sheets("record2").Range("A" & m)
codee = Sheets("record2").Range("B" & m)
marqe = Sheets("record2").Range("C" & m)
axee = Sheets("record2").Range("D" & m)

If mag = mage And code = codee And marq = marqe And axe = axee Then
Sheets("record2").Range("E" & m) = CA
Sheets("record2").Range("F" & m) = CAP
Sheets("record2").Range("G" & m) = ind
enr = True
Exit For
End If
Next m
If enr = False Then
derlin = Sheets("record2").Range("A65536").End(xlUp).Row + 1
Sheets("record2").Range("A" & derlin) = mag
Sheets("record2").Range("B" & derlin) = code
Sheets("record2").Range("C" & derlin) = marq
Sheets("record2").Range("d" & derlin) = axe
Sheets("record2").Range("e" & derlin) = CA
Sheets("record2").Range("f" & derlin) = CAP
Sheets("record2").Range("g" & derlin) = ind
End If
enr = False
Next n
End Sub

MERCI
 
Re : macro selection données filtrées

Re,

Essaie ceci mais pas testé

Code:
 Sub recorde1()
For n = 14 To Sheets("etape1").Range("A300").Row
[COLOR=Red]H = Cells(n,1).Height[/COLOR]
  mag = Sheets("etape1").Range("A" & n)
  code = Sheets("etape1").Range("B" & n)
  marq = Sheets("etape1").Range("C" & n)
  axe = Sheets("etape1").Range("D" & n)
  CA = Sheets("etape1").Range("E" & n)
  CAP = Sheets("etape1").Range("F" & n)
  ind = Sheets("etape1").Range("G" & n)
 For m = 2 To Sheets("record2").Range("A65536").End(xlUp).Row
  mage = Sheets("record2").Range("A" & m)
  codee = Sheets("record2").Range("B" & m)
  marqe = Sheets("record2").Range("C" & m)
  axee = Sheets("record2").Range("D" & m)
  
    If mag = mage And code = codee And marq = marqe And axe = axee [COLOR=Red]And H <> 0[/COLOR] Then
      Sheets("record2").Range("E" & m) = CA
      Sheets("record2").Range("F" & m) = CAP
      Sheets("record2").Range("G" & m) = ind
      enr = True
      Exit For
    End If
 Next m
 If enr = False [COLOR=Red]And H <> 0[/COLOR] Then
   derlin = Sheets("record2").Range("A65536").End(xlUp).Row + 1
   Sheets("record2").Range("A" & derlin) = mag
   Sheets("record2").Range("B" & derlin) = code
   Sheets("record2").Range("C" & derlin) = marq
   Sheets("record2").Range("d" & derlin) = axe
   Sheets("record2").Range("e" & derlin) = CA
   Sheets("record2").Range("f" & derlin) = CAP
   Sheets("record2").Range("g" & derlin) = ind
 End If
 enr = False
Next n
End Sub

Edit : Salut Romain !
 
Dernière édition:
Re : macro selection données filtrées

re,

Et bien apparement je suis transparent aujourd'hui...
Ma solution ne te plait pas ????
Je persite un peu avec ceci (j'en ai profité pour modifier légèrement ton code en rajoutant des With) :
Code:
Sub recorde1()
For n = 14 To 300
    With Sheets("etape1")
        mag = .Range("A" & n)
        code = .Range("B" & n)
        marq = .Range("C" & n)
        axe = .Range("D" & n)
        CA = .Range("E" & n)
        CAP = .Range("F" & n)
        ind = .Range("G" & n)
    End With
    With Sheets("record2")
        For m = 2 To .Range("A65536").End(xlUp).Row
            mage = .Range("A" & m)
            codee = .Range("B" & m)
            marqe = .Range("C" & m)
            axee = .Range("D" & m)
            If .Rows(m).Hidden = False Then
                If mag = mage And code = codee And marq = marqe And axe = axee Then
                    .Range("E" & m) = CA
                    .Range("F" & m) = CAP
                    .Range("G" & m) = ind
                    enr = True
                    Exit For
                End If
            End If
            Next m
            If enr = False And .Rows(m).Hidden = False Then
                derlin = .Range("A65536").End(xlUp).Row + 1
                .Range("A" & derlin) = mag
                .Range("B" & derlin) = code
                .Range("C" & derlin) = marq
                .Range("d" & derlin) = axe
                .Range("e" & derlin) = CA
                .Range("f" & derlin) = CAP
                .Range("g" & derlin) = ind
            End If
            enr = False
        End With
    End If
Next n
End Sub

@+
 
Re : macro selection données filtrées

Bonjour tout le monde

Excuse moi Romain, je ne t'est pas répondu car je n'ai vu ta réponse qu'aprés avoir posté mon deuxième message (il a du s'afficher pendant que j'écrivais à Sergio)

Je viens tout juste de tester la méthode de Sergio et ça fonctionne nickel!!

Merci beaucoup à tous les deux
Vous faites un stagiaire heureux!!
 
- 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

S
Réponses
8
Affichages
2 K
StanislasC
S
P
Réponses
6
Affichages
1 K
P
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…