XL 2013 Coller seulement dans les cellules visibles

EveDesLys

XLDnaute Nouveau
Bonjour à tous,

J'ai des données dans une colonne que je veux copier et coller dans un autre onglet. Mais, dans mon autre onglet, il y a des cellules masquées et je veux qu'il les ignorent pour coller seulement sur les cellules visibles.

Merci d'avance de votre aide!
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour EveDesLys,
On peut détecter si une cellule est visible ou non en regardant les propriétés .EntireRow.Hidden et EntireColumn.Hidden.
Par exemple si on regarde la cellule C1, on peut faire :
VB:
If [C1].EntireRow.Hidden Or [C1].EntireColumn.Hidden Then
    MsgBox " La cellule C1 est masquée"
Else
    MsgBox " La cellule C1 est visible"
End If
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Ève, sylvanu,

sylvanu a raison : une feuille peut être masquée ou visible ; une ligne ou une colonne aussi, mais une cellule toute seule ne peut pas être masquée ou rendue visible, du moins pas tant qu'on agit sur la ligne ou la colonne qui la contient, ou sur la feuille entière qui contient cette cellule ; à noter que si tu masques la feuille entière, tu masques toutes les cellules, pas seulement la cellule que tu voulais masquer ! 😭

soan
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
Bonjour JHA,

il y a des cellules masquées et je veux qu'ils les ignorent

J'ai des données dans une colonne que je veux copier et coller dans un autre onglet.

je pense que ta manip est valable seulement si « ils » (les Men In Black) n'ont accès qu'à l'autre onglet ! (c'est dans le style : « ton autre permis de conduire et ton autre carte grise stp », dixit K) ; par contre si « ils » (oui, les mêmes personnes incognito, dont tout l'monde a oublié le nom) ont accès à l'onglet où doit s'effectuer la copie, je crains que ça ne puisse pas marcher ! car même ta manip ne pourra pas les empêcher de voir les cellules masquées s'ils en ont envie : il leur suffira de démasquer la ligne ou la colonne adéquate ! quant à protéger la feuille avec un mot de passe, on sait que c'est une protection illusoire et inefficace car un pro qui s'y connaît déprotège une feuille Excel protégée par mot de passe en moins de 5 minutes !

soan
 

EveDesLys

XLDnaute Nouveau
Merci à tous.

JHA, ce que tu as proposé fonctionne seulement pour ignorer les cellules masquées copiée et non collées.

Sylvanu, où est-ce que j'insèrerais ce que tu m'as écris dans la macro suivante (j'ai mit en gras la partie où je colle dans mon autre onglet) :

Sheets("Base de données").Select
Selection.Copy
Sheets("Hebdo").Select
Cells.Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
Application.Run "TEST.xlsm!CopierLignes"
Cells.Select
Selection.AutoFilter
Range("H3").Select
ActiveSheet.Range("$A$1:$AC$83").AutoFilter Field:=10, Criteria1:="<>"
ActiveSheet.Range("$A$1:$AC$83").AutoFilter Field:=8, Criteria1:="Semaines"
Application.Run "TEST.xlsm!Jour"
Sheets("RDV").Select
Range("P2:p19").Select
Selection.Copy
Sheets("Hebdo").Select
Range("B62").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Columns("A:A").Select
Selection.EntireColumn.Hidden = True
Columns("D:K").Select
Selection.EntireColumn.Hidden = True
Columns("N:N").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("N73").Select
Sheets("Étapes").Select
End Sub

Merci beaucoup!
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir tout le monde,
@EveDesLys ,
Avec un test sommaire, je ferais :
VB:
If [B62].EntireRow.Hidden = False And [B62].EntireColumn.Hidden = False Then
    [B62].Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=FalseElse
End If
Attention, le OU est devenu ET pour ne tester que Visible.
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Sylvanu, où est-ce que j'insèrerais ce que tu m'as écris dans la macro suivante (j'ai mit en gras la partie où je colle dans mon autre onglet)
Tu l'insèrerais dans le code du classeur que tu aurais posté en #1 en même temps que ta question. ;)


@sylvanu : je n'y comprends pas grand chose, alors je me permet de poser une question peut-être saugrenue : tel quel, est-ce que le code de #8 ne copie pas uniquement la cellule B62 ?
[edit]
N'importe quoi ! Question stupide et complètement à côté de la plaque !
Shame on me !!! 😞
Désolé Sylvanu
[/edit]
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Moi qui pensais que c'était limpide ! 😂

Remplacez :
Range("B62").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


Par :
If [B62].EntireRow.Hidden = False And [B62].EntireColumn.Hidden = False Then
[B62].Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=FalseElse
End If
 

TooFatBoy

XLDnaute Barbatruc
J'ai des données dans une colonne que je veux copier et coller dans un autre onglet. Mais, dans mon autre onglet, il y a des cellules masquées et je veux qu'il les ignorent pour coller seulement sur les cellules visibles.
A défaut d'un classeur (pas forcément utile ;)), est-ce que tu peux donner un exemple ?

C'est un truc du genre : copier B2:B6 d'une feuille, en C3;C7:C9;C12 de l'autre feuille ???
 

EveDesLys

XLDnaute Nouveau
La macro "bogue" à la fin (la partie que j'ai mis en gras) Peux-tu m'aider à comprendre quelle est mon erreur STP :

Sub Hebdo()
'
' Hebdo Macro
'

'
Sheets("Base de données").Select
Selection.Copy
Sheets("Hebdo").Select
Cells.Select
ActiveSheet.Paste
Application.CutCopyMode = False
Application.Run "TEST.xlsm!CopierLignes"
Selection.AutoFilter
Range("A4").Select
ActiveSheet.Range("$A$1:$AB$148").AutoFilter Field:=1, Operator:= _
xlFilterNoFill
ActiveSheet.Range("$A$1:$AB$148").AutoFilter Field:=8, Criteria1:= _
"Semaines"
ActiveSheet.Range("$A$1:$AB$148").AutoFilter Field:=10, Criteria1:="<>"
Columns("A:A").Select
Selection.EntireColumn.Hidden = True
Columns("D:J").Select
Selection.EntireColumn.Hidden = True
Columns("M:M").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B62").Select
Application.Run "TEST.xlsm!Jour"
Sheets("RDV").Select
Range("P2:p19").Select
Selection.Copy
Sheets("Hebdo").Select
If [B62].EntireRow.Hidden = False And [B62].EntireColumn.Hidden = False Then
[B62].Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=FalseElse

End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T