Prise en compte des colonnes cachées vba

cookies

XLDnaute Occasionnel
Bonjour,
De retour sur le forum pour une aide précieuse.

j'ai un souci avec cette ligne de code, extrait d'un code qui me permet de copier une même plage de chaque classeur d'un répertoire et de coller ces plages les unes à la suite des autres dans un aure classeur.

ActiveWorkbook.Worksheets(1).Activate
Worksheets(1).Range("D23:Q9168").Copy Destination:=Workbooks(strWB).Worksheets("Feuil1").Range("A" & lgDerLig)
lgDerLig = Range("A65536").End(xlUp).Row + 1


avec strWB qui appelle le nom du classeur et une boucle qui tourne sur tous les classeurs du répertoire

Le problème est que j'ai des colonnes cachées dans ma plage source "D23:Q9..." qui ne sont pas copiées dans le classeur de destination.

Avez-vous une solution ?
je pensais à un collage valeur avec PasteSpecial Paste:=xlPasteValues mais ça ne marche pas...

Merci le forum pour vos réponses !
cookies
 

youky(BJ)

XLDnaute Barbatruc
Re : Prise en compte des colonnes cachées vba

Bonsoir cookies,
Essaies peut être comme ceci pour la copie
Ajuster si besoin le tableau de destination qui doit être de même dimension que le tableau source
Donc changer N et 145 si pas correct
lgDerLig = Range("A65536").End(xlUp).Row + 1
Workbooks(strWB).Worksheets("Feuil1").Range("A" & lgDerLig & ":N" & lgDerLig + 145).Value = _
Worksheets(1).Range("D23:Q9168").Value

Bruno
 

cookies

XLDnaute Occasionnel
Re : Prise en compte des colonnes cachées vba

Bonjour,

En effet ça marche, merci, mais il y un effet secondaire auquel je n'avais pas pensé.

Mon code permettait de ne copier que mes lignes et colonnes filtrées de cette plage.
Ta solution permet en effet de copier toute la plage D23:Q9168 mais en définitive il faut que les colonnes cachées soient copiées et affichées dans le classeur de destination mais pas les lignes cachées...

Si il y a une solution je suis preneur.
Merci !
Cookies
 

youky(BJ)

XLDnaute Barbatruc
Re : Prise en compte des colonnes cachées vba

Bonsoir,
Toujours des imprévus . . . . .
J'ai fait ceci à tester et bien repasser de partout car non testé
cela pour un classeur, il reste à faire la boucle sur tous les classeurs
Principe>>> on fait un tablo "t" et on le recopie aprés chaque classeur
Bruno

Code:
'ici boucle sur fichier For......
ActiveWorkbook.Worksheets(1).Activate ' classeur source


With Sheets(1)
 For i = 23 To 9168 'si 9168 est fixe sinon calculer
    If Not .Rows(i).EntireRow.Hidden Then
             k = k + 1
      For n = 0 To 12
        t(k, n) = .Cells(i, n + 4) 'copie de la ligne en tablo
      Next
    End If
 Next
End With
With Workbooks(strWB).Sheets("Feuil1")
   lgDerLig = .Range("A65536").End(3).Row + 1 'calcul derligne
    .Range("A" & lgDerLig).Resize(k, UBound(t, 2)) = t 'copie du tablo
End With
t = "" 'on efface pour refaire une autre boucle
'fin boucle des fichiers 'Next
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Prise en compte des colonnes cachées vba

Bonsoir cookies, youky(BJ),

Un essai par une autre méthode. Pour l'exemple, on copie de Feuil1 vers Feuil2 avec la zone "D2:Q30".

le code vba:
VB:
Sub test()
'Zone à copier
Const Acopier = "D2:Q30"
'déclaration
Dim Zone As Range, E As Range, nbCol As Long

Application.ScreenUpdating = False
'Nombre de colonne à copier
nbCol = Range(Acopier).Columns.Count

' zone à copier - on prend les cellule visibles de la zone à copier
'               - on étend cette zone aux lignes entières
'               - et on fait l'intersection des lignes entières avec la zone à copier
With Sheets("Feuil1")
  Set Zone = Intersect(Range(Acopier).SpecialCells(xlCellTypeVisible).EntireRow, Range(Acopier))
End With

'on boucle sur chaque Area de zone - un area représente un ensemble de lignes visibles consécutives
For Each E In Zone.Areas
    Sheets("Feuil2").Range("a" & Rows.Count).End(xlUp).Offset(1).Resize(E.Rows.Count, nbCol).Value = E.Value
Next E

Application.ScreenUpdating = True
Sheets("Feuil2").Activate
End Sub
 

Pièces jointes

  • cookies-Prise en compte des colonnes cachées vba v1.xlsm
    24 KB · Affichages: 44
Dernière édition:

cookies

XLDnaute Occasionnel
Re : Prise en compte des colonnes cachées vba

Bonjour Bruno et mapomme,

Merci pour vos réponses. J'ai testé ton fichier mapomme et cela effectue bien ce que je recherche. Merci.

En revanche lorsque j'intègre ton code au reste du mien il y un leger souci que je n'arrive pas à résoudre.
La macro tourne bien mais ne copie pas la plage apparante.

Pour rappel, mon but est d'effectuer ce que as fait mapomme mais au lieu de récupérer et coller le tableau dans le meme classeur, je récupère ce tableaux de tous les classeurs d'un répertoire je les colle les uns à la suite des autres.

J'ai joint mon fichier afin que cela soit plus clair.
Merci d'avance !
cookies
 

Pièces jointes

  • test3.xlsm
    19 KB · Affichages: 41
  • test3.xlsm
    19 KB · Affichages: 42
  • test3.xlsm
    19 KB · Affichages: 43

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Prise en compte des colonnes cachées vba

Bonsoir cookies,

J'ai modifié le code pour tenir compte des classeurs externes (dans mon exemple j'agissais sur un seul classeur).

Attention à bien définir la constante Acopier qui est la zone à copier à partir des autres classeurs.

J'espère que cette modif résoudra ton soucis sinon, reviens ici.
 

Pièces jointes

  • cookies-Prise en compte des colonnes cachées vba v2.xlsm
    26.2 KB · Affichages: 38

cookies

XLDnaute Occasionnel
Re : Prise en compte des colonnes cachées vba

C'est super !
en fait mon erreur était dans la déinition de la constante ainsi que sur la feuille où copier les infos.

Merci pour le temps passé et pour votre réaactivité !
A bientôt
cookies
 

Discussions similaires

Réponses
3
Affichages
649

Statistiques des forums

Discussions
312 623
Messages
2 090 278
Membres
104 480
dernier inscrit
Gatsuken