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

Prise en compte des colonnes cachées vba

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

C

cookies

Guest
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
 
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
 
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
 
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
 
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

Dernière édition:
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

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

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
 
- 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

  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
817
R
  • Question Question
Réponses
1
Affichages
1 K
T
Réponses
2
Affichages
1 K
Tava94
T
Réponses
0
Affichages
1 K
V
Réponses
5
Affichages
1 K
Vince78740
V
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…