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!
 

TooFatBoy

XLDnaute Barbatruc
Tu avais bien sélectionné les cellules B126:B137, avant de lancer la macro par <F5> ?

sans-titre-png.1142786
 
Dernière édition:

EveDesLys

XLDnaute Nouveau
Je ne comprends pas vraiment ce que tu veux dire par "sur le curseur de l'éditeur VBA", mais j'ai essayé juste en lançant la macro et ça fonctionne. Ça inscrit quand même une valeur dans la ligne masquée, donc je ne sais pas comment ça va réagir, mais j'ai les bonnes valeurs dans les bonnes cases affichées, c'est ce qui compte. Merci!
Maintenant, comment je vais pour l'intégrer correctement?
 

EveDesLys

XLDnaute Nouveau
Je crois qu'il y avait un bogue dans mon fichier, ça le fait comme il faut maintenant. Il ne reste plus qu'à savoir comment l'intégrer avec les données dans un autre onglet. Merci de ta patience, je ne sais vraiment pas ce que je fais, je ne comprends pas les données des macros, comment ils fonctionnent.
 

TooFatBoy

XLDnaute Barbatruc
Voilà ;)

Je pense que par rapport à la macro de #6, ça pourrait donner ça :
VB:
Sub Hebdo()
'
    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"

    Set PlageSource = Sheets("RDV").Range("P2:P19")

    With Sheets("Hebdo")

        x = 1
        For Each c In PlageSource
            x = x + 1
            While .Cells(x, 2).EntireRow.Hidden = True
                x = x + 1
            Wend
            .Cells(x, 2) = c
        Next c

        .Columns("A:A").EntireColumn.Hidden = True
        .Columns("D:K").EntireColumn.Hidden = True

        With .Columns("N:N")
            .Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
            .Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
            .Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        End With

    End With

    Sheets("Étapes").Select

End Sub

Ça devrait copier les cellules P2 à P19 de la feuille "RDV", dans les cellules non masquées de la colonne B de la feuille "Hebdo".
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
@EveDesLys, sylvanu, Marcel32,

finalement, j'ai très bien compris c'que tu veux ! 😊 réécriture de la 1ère phrase de ton post #19 :​

Je l'ai corrigé mais ça fait un "coller" ordinaire : il met une donnée dans ma 10ème ligne qui est masquée au lieu de coller la dernière donnée dans la 12ème ligne. (ceci est un exemple)

tu veux faire un habituel copier / coller valeurs avec .Copy et .PasteSpecial ; mais de telle façon que s'il y a des lignes masquées dans le bloc de destination de la copie, ça saute automatiquement ces lignes masquées pour ne pas écrire des infos dessus ! donc d'après le texte ci-dessus, c'est pas seulement la ligne 10 qui est masquée, c'est aussi la ligne 11 ! il faudrait alors qu'après avoir écrit une donnée en ligne 9, ça saute les 2 lignes masquées 10 et 11 pour écrire la donnée suivante en ligne 12.

à noter que ça cadre parfaitement avec l'énoncé du post #1 : « 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. » ; sauf que tu aurais dû écrire : « ...Mais, dans mon autre onglet, il y a des lignes masquées et je veux qu'il les ignorent pour coller seulement sur les lignes visibles. » ; eurêka, tout est clair ! 💡



ensuite, on peut passer à ton post #27 : effectivement, suite à un copier / coller des données sur fond jaune de la plage B126:B137 en cellule B62 : ça colle toutes les données à partir de B62 puis en dessous, sans se préoccuper de savoir si une ligne est masquée ou non ; ton 26 de B135 (qui est juste sous le 19 de B134) se retrouve en B71 (qui est juste sous le 19 de B70) ; et ton 2ème 26 de B136 se retrouve en B72 ; mais comme la ligne 72 est masquée, on ne peut pas voir ce 2ème 26 ! 😭 note que si la ligne 68 avait été masquée, tu n'aurais pas pu voir le 5 de B68 ; autre exemple : si la ligne 73 avait été masquée, tu n'aurais pas pu voir le dernier nombre 12 de B73 ; tu vois, j'ai bien compris quel est ton problème, hein ? 😇

manque de pot, j'ai pour toi une très mauvaise nouvelle : quand tu utilises un tableau dont tu as l'intention de masquer ou démasquer des lignes, par exemple via l'utilisation du filtre automatique :

a) on ne peut pas savoir d'avance quelles lignes vont être masquées ou non, car ça dépend des critères de filtre qui vont être mis en place !

b) à cause du point a), c'est tout simplement un non-sens évident de faire un copier/coller de données sur les mêmes lignes que celles du tableau ! (ni à gauche, ni à droite, ni au milieu ; que lesdites lignes soient actuellement masquées ou non) ; et quand je dis un non-sens, je pèse mes mots ! je veux dire par là que même simplement te déconseiller de le faire ne serait absolument pas approprié !

il faudrait faire quoi, alors ? faire le coller sous les lignes du tableau ? non, ça n'est pas non plus une bonne idée, car ton tableau est censé s'étendre vers le bas et le problème se reposerait à nouveau ; un 1er moyen sûr serait si ton tableau est de taille fixe : il serait par exemple toujours de 100 lignes maximum, jamais plus ! tu pourrais alors sans problème faire un coller en dessous ; 2ème moyen sûr : tu sais que ton tableau va s'agrandir, et en même temps, tu es absolument sûre et certaine que la dernière ligne de ton tableau sera au maximum en ligne 2000 ; dans ce cas, tu peux faire un coller sûr (sans aucun risque que des lignes soient masquées) à partir de la ligne 2002 (car il faut laisser au moins une ligne entièrement vide sous le tableau) ; 3ème moyen sûr : faire tout simplement le coller sur une autre feuille ! car dans ce cas, y'a aucun risque d'interférence entre les lignes des données collées et les lignes du tableau de départ ! de faire comme le non-sens décrit plus haut, c'est créer un fichier Excel dont la conception est mal foutue ! et ça peut n'apporter que des problèmes tôt ou tard, qui causeront des ennuis plutôt bien embêtants ! 😭



OK, donc toujours pas de réponse à la question de #12, et pas plus de réponse à celle de #29...

question du post #12 de Marcel : « C'est un truc du genre : copier B2:B6 d'une feuille, en C3;C7:C9;C12 de l'autre feuille ??? » ; réponse : oui, car c'est un copier / coller de B2:B6 à partir de C3 ; mais y'a un problème, c'est que ces lignes sont masquées : 4 à 6, 8, 10 et 11.

question du post #29 de Marcel : « est-ce que ici "B62" veut en fait dire "première cellule non masquée de la colonne B" ??? » ; réponse de normand : oui et non ; par rapport au tableau de l'image .png du post #27, il s'agit simplement de faire un copier / coller des données sur fond jaune de B126:B137 en B62 (donc à partir de B62, puis en dessous) ; seulement voilà : y'a des lignes masquées dans le bloc de destination du coller, et on ne peut pas savoir d'avance quelles vont être ces lignes ! (ne pas oublier qu'un autre filtre peut être fait à tout moment !) ; sur l'image, note tout ceci : la ligne d'en-têtes du tableau, évidemment visible, est la ligne n° 1 ; voici les autres lignes visibles : 62 à 71 ; 73 et 74 ; 125 et en dessous ; voici les lignes masquées : 2 à 61 ; 72 ; 75 à 124 ; la ligne 62 de B62 (la cellule de départ pour le coller) est donc actuellement visible, mais ça n'est qu'une coïncidence : elle pourra très bien être masquée lors d'un prochain filtrage ; et comme c'est une cellule de départ pour le coller, ça signifie bien que toutes les lignes en dessous sont concernées ! dès lors, quel sera leur état ? visible ou masqué ? impossible à prévoir car ça dépendra des futurs filtrages qui vont être effectués sur le tableau ! donc dans de telles conditions, c'est tout simplement impossible de faire un coller fiable, au sens que toutes les données copiées seront visibles !

à part ça, Marcel, t'as fini d'embêter la gentille demoiselle avec tes questions gênantes ? 😜 😄 🤣 après, Ève ne sait plus quoi te répondre, ou comment ! :oops: (je blague, hein ? tu sais bien ! 😄)



je reprends où j'en étais avant tes questions ; c'est pour toi, Ève :

dans ton post #30 : « Je veux juste faire un "copier-coller" qui copie tel quel, mais colle en sautant les lignes masquées » : idem que ce qu'on a déjà vu.

dans ton post #40 : « B62 c'est juste là où les lignes non masquées commencent, comme on voit sur l'image » : oui, c'est effectivement comme ça sur l'image ; mais ça n'est qu'une coïncidence ! tôt ou tard, tu feras un autre filtrage, et pof ! la 1ère ligne non masquée ne sera plus la ligne 62 ; ça pourra être avant ou après ; et c'est impossible à prévoir ! de toutes façons, même à supposer que ça serait toujours à partir d'une ligne 62 visible, les lignes en dessous poseront le même problème ! exemple : la ligne 71 est visible et la ligne 72 est masquée ; mais une autre fois, ça pourra être l'inverse ! la ligne 71 masquée et la ligne 72 visible !​



si Ève disait que l'état des lignes masquées ou non est toujours le même que sur l'image, ça pourrait aller, mais ça m'étonnerait beaucoup ! ça signifierait que des données présentes sur les lignes masquées ne sont jamais rendues visibles, donc jamais lues non plus ! ... tout au moins par l'utilisateur, car bien sûr, un code VBA peut lire ces cellules masquées, même si ça serait celles d'une feuille masquée !

après tout ce que j'ai écrit et détaillé dans ce super long post, je suis super curieux de savoir quelle orientation vous aller donner pour la suite à cette si charmante conversation ! 😁 😄 😂 🤣 bon courage quand même, en particulier pour Ève, et aussi bonne chance ! 🍀

soan
 

TooFatBoy

XLDnaute Barbatruc
Mon pauvre, tu as écrit tout ça (et tu nous en as donc infligé la lecture 😁) pour rien puisque le problème de savoir où exactement coller les données est déjà résolu. ;)

Remarque : le fait que les données doivent être collées à partir de la ligne 62 et que la première ligne non masquée soit aussi la ligne 62, n'est absolument pas une coïncidence puisque c'est justement le critère pour déterminer à partir de quelle ligne il faut coller les données. 😉
 

TooFatBoy

XLDnaute Barbatruc
ah bon ? ok ! :)
Ben t'as pas lu #50:#52 ??? 😉

j'ai essayé juste en lançant la macro et ça fonctionne. Ça inscrit quand même une valeur dans la ligne masquée, donc je ne sais pas comment ça va réagir, mais j'ai les bonnes valeurs dans les bonnes cases affichées, c'est ce qui compte.
Je crois qu'il y avait un bogue dans mon fichier, ça le fait comme il faut maintenant.
 

Discussions similaires

Statistiques des forums

Discussions
312 113
Messages
2 085 426
Membres
102 887
dernier inscrit
MarcVeretz