XL 2016 InputBox sur données filtrées, avec Variable tableau

Etxezarreta

XLDnaute Nouveau
Bonjour,
Comme vous le verrez dans la PJ, j'ai écrit un code pour sélectionner des lignes via une InputBox dans une plage filtrée. Cette sélection est ensuite passées en variable tableau pour être copiée et collée dans un autre classeur.
Le problème est que mêmes les lignes ne satisfaisant pas au critère du filtre sont intégrées dans la variable tableau.
Par exemple, si je sélectionne en colonne E le critère "AB", les lignes 2, 8, 14 et 20 sont affichées. Si à l'aide l'inputbox je sélectionne les lignes 2 et 8, toutes les lignes entre sont copiées et collées.
Merci de vos conseils.

Etxe.
 

Pièces jointes

  • EssaiVarTableauTri.xlsm
    39.5 KB · Affichages: 12

youky(BJ)

XLDnaute Barbatruc
Bonjour Etxe. ,
Je pense qu'il faut faire avec SpecialeCells et copy Paste
Bruno
VB:
Sub EssaiiltreEtInputBox()
   
    Dim newbook As Workbook
    Dim intLigneDebutSelection As Integer
    Dim intLigneFinSelection As Integer
    Dim intLigneDuRemplacementConfirme As Integer
    Dim intLigneRenseignee As Integer
    Dim rngPlageSelectionnee As Range
   
    With wksTrameConfRemp
    .Unprotect
    .Range(.Range("C6"), .Range("M1000")).ClearContents
    End With
      
    With wksBD
    .Activate
    .Unprotect
    On Error Resume Next
    Set rngPlageSelectionnee = Application.InputBox(Prompt:="Veuillez s?lectionner des cellule de la demande ? envoyer", Type:=8, Default:="")
    On Error GoTo 0
    End With
    Application.ScreenUpdating = False
   
    With rngPlageSelectionnee
    On Error Resume Next
    intLigneDebutSelection = .Row
    intLigneFinSelection = intLigneDebutSelection + .Rows.Count - 1
    On Error GoTo 0
    End With
   
    With wksBD
    On Error Resume Next
    .Range(.Range("C" & intLigneDebutSelection), .Range("M" & intLigneFinSelection)).SpecialCells(xlCellTypeVisible).Copy
    On Error GoTo 0
    End With
    Set newbook = Workbooks.Add
   
    With wksTrameConfRemp
    .Unprotect
    .Range("C6").PasteSpecial
    .Range(.Range("C6"), .Range("M6").Offset(intLigneFinSelection - intLigneDebutSelection, 0)).EntireColumn.AutoFit
    .Copy before:=newbook.Sheets("Feuil1")
    End With
    Application.ScreenUpdating = True
End Sub
 

Discussions similaires

Réponses
7
Affichages
342

Statistiques des forums

Discussions
312 169
Messages
2 085 911
Membres
103 033
dernier inscrit
thazet