XL 2013 Coller seulement dans les cellules visibles

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

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!
 
Je l'ai corrigé mais ça fait un "coller" ordinaire, il met une donnée dans ma 10e ligne qui est masqué au lieu de coller la dernière donnée dans la 12e ligne (exemple). Je n'ai pas mis le fichier Excel car il contient beaucoup de données personnelles. Merci.
 
1112.gif

Même avec un effort, trop fort pour moi.
 
@EveDesLys, le fil,

ajout :

1) comme c'est avec ...Operation:=xlNone, SkipBlanks:=False, Transpose:=False

tu peux abréger en : Selection.PasteSpecial Paste:=xlPasteValues

2) comme le 1er argument de PasteSpecial est justement Paste, tu peux enlever le nom Paste, car il se trouve en 1ère position dans l'ordre d'apparition des paramètres de PasteSpecial ; ça devient donc :​

Selection.PasteSpecial xlPasteValues

3) si en plus tu utilises la constante numérique de xlValues à la place de xlValues, ça devient :

Selection.PasteSpecial -4163

4) ah ben non, c'est fini : y'a plus d'optimisation possible ! ... à part celle mentionnée par @Marcel32 dans son post #13 ; c'était à propos de [B62].Select et Selection.PasteSpecial... ; donc l'instruction entière est :

[B62].PasteSpecial -4163



et on était parti de quoi, déjà ? ah oui, de ça :

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

comme qui dirait, m'est avis que ça vient tout droit de l'Enregistreur de macros !!! 😄

soan​
 
@EveDesLys

ajout : le nom de toutes les constantes Excel commence par xl ; par exemple xlPasteValues ou xlValues ; toute constante Excel a une valeur numérique qu'on appelle "constante numérique" ; et justement, le nombre de la constante numérique pour xlPasteValues ou xlValues est : -4163

conclusion : si tu écris :​

[B62].PasteSpecial xlPasteValues ou [B62].PasteSpecial xlValues

c'est comme si tu écrivais :

[B62].PasteSpecial -4163 ; c'est idem : c'est kif kif bourricot ! 😜

lors de la phase de compilation du projet VBA, le compilateur traduira toutes ces instructions par le même code machine ! mais j'saurais pas te dire en quel langage s'est traduit ! je ne crois pas que ce soit en assembleur ; ça doit plutôt être en C++ ; peut-être même que c'est traduit dans un langage intermédiaire P-Code, qui lui est traduit en C++ ; ce n'est pas moi qui est conçu Excel et VBA, alors ne m'en demande pas trop ! c'est à Microsoft qu'il faut demander des précisions ! 😛​

soan
 
Dernière édition:
@EveDesLys

autre exemple : False a la valeur 0 ; donc :

Application.CutCopyMode = False

peut être remplacé par :

Application.CutCopyMode = 0



à partir de ton code VBA, voici un un autre exemple amusant :

Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

* comme les 2 paramètres indiqués sont dans l'ordre naturel de leur apparition, ça devient :​

Selection.Insert xlToRight, xlFormatFromLeftOrAbove

* xlFormatFromLeftOrAbove peut être remplacé par le nombre 0

* xlToRight peut être remplacé par le nombre 2

donc ça devient :

Selection.Insert 2, 0

c'est bien plus court, hein ? y'a pas photo ! 😄

soan
 
Ça ne fonctionne pas. J'ai mis ici une image ou on voit mon tableau. J'essaie de prendre la sélection surlignée en jaune et la copier à partir de la case B62. Mais je ne veux pas que ça "colle" de valeur dans la case B70 qui est masquée, je voudrais que ça passe la ligne masquée et que ça mette la donnée dans la case B71. C'est peut-être plus clair avec une image.
 

Pièces jointes

  • Sans titre.png
    Sans titre.png
    30.2 KB · Affichages: 23
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 ???
Donc en gros, tu aurais répondu à cette question en #12, ça aurait éviter à l'ami @sylvanu de se péter désespérément les neurones sur sa boule de cristal en #20...
 
Perso je ne sais pas faire avec une instruction VBA, alors j'essaierai de faire un bout de code qui colle chaque cellule de la sélection selon si la cellule de la colonne cible est affichée ou non.
Mais ce serait du VBA, donc bonjour la lenteur...

Je tente une nouvelle question : est-ce que ici "B62" veut en fait dire "première cellule non masquée de la colonne B" ???
 
C'est que les données dans l'onglet sont déjà "importées" avec une macro, donc je ne peux pas créer de formule dans la/les cases.
Je veux juste faire un "copier-coller" qui copie tel quel, mais colle en sautant les lignes masquées, et ça doit être dans la macro.
 
- 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

Discussions similaires

Réponses
1
Affichages
287
Réponses
10
Affichages
272
Réponses
3
Affichages
33
Retour