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

Microsoft 365 coller uniquement dans les cellules non filtrées

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 !

Arnaud Legay

XLDnaute Nouveau
Bonjour,
Je ne trouve pas de solution : je sélectionne 3 cellules (exemple A1, A2, A3) dans une feuille.
Je souhaite les coller sur une autre feuille qui a des lignes filtrées.
Lorsque je colle, cela fonctionne mais tout n'est pas visible puisque des lignes sont filtrées.
J'ai essayé de sélectionner les cellules où je souhaite coller mes donnes, d'aller chercher le paramètre "Sélectionner les cellules - Cellules visibles uniquement", mais cette fois, j'ai le message : "Nous ne pouvons pas effectuer cette action sur une sélection de plusieurs plages. Sélectionnez une seule plage, puis réessayez".

Y a-t-il une solution ?

Merci d'avance
 
Solution
Bonjour,
Alors voici un bou de fichier exemple, je ne peux pas mettre tout le fichier original (confidentialité).
Ce qu'il faut prendre en compte c'est que les noms que je copie provienne d'une autre source (google-sheet). Le but est donc de copier les noms de la feuille2, et de les coller dans les cellules A159, A161 et A191 mais en ne faisant qu'une seule sélection.
A disposition si vous avez besoin de plus d'infos.
Merci d'avance pour votre aide.
 

Pièces jointes

Bonjour à tous,

Je vois que tu filtres sur les "1" et que tu as des lignes discontinues. Par copier/coller, je ne vois pas.

Il me semble qu"il te faut passer par VBA mais désolé, je suis incapable de t'aider sur le code.

Patience, avec le fichier joint, des réponses vont certainement venir rapidement.

JHA
 
Bonjour,
Merci @Phil69970 mais cela ne répond pas à mes attentes.
Ta proposition fonctionne mais uniquement si les données copiées sont sur le meme classeur, dans un onglet donné, dans des cellules précises et collées dans des cellules précises.
Mon problème est que les données que je copie sont sur un classeur google (googlesheet), dans différents onglets, et que les cellules où je veux les coller varient aussi d'un classeur à un autre....
Je sais que ma demande est particulière, je pensais qu'un "simple" raccourci que je ne connaissait pas existait.
J'imagine qu'une macro serait possible du genre "Colle les données copiées dans le presse-papier sur les cellules sélectionnées, mais uniquement dans les cellules visibles" ;-)
 
Bonjour à tous,

Un essai sans API.
  • copier une plage (par exemple sur la feuille "Plage à copier")
  • sélectionner la feuille "Plage Filtre"
  • sélectionner une cellule de la plage filtrée
  • Tapez la combinaison des deux touches Ctrl+h (ou exécuter directement la macro collerVisible dans module1)
On peut copier une plage depuis un autre classeur que celui où on va coller cette plage.
On ne copie que les valeurs (on peut changer cela).


Macro dans module1 :
VB:
Sub collerVisible()
Dim sx As Worksheet, xrg As Range, x, actCell As Range
   Application.ScreenUpdating = False
   If Application.CutCopyMode = False Then Exit Sub
   Set actCell = ActiveCell: Set sx = Worksheets.Add
   On Error GoTo FIN
   sx.Range("a1").PasteSpecial xlPasteValues: Set xrg = Selection
   For Each x In xrg.Columns(1).Cells
      Do While actCell.EntireRow.Hidden = True: Set actCell = actCell.Offset(1): Loop
      actCell.Resize(, xrg.Columns.Count) = x.Resize(, xrg.Columns.Count).Value
      Set actCell = actCell.Offset(1)
   Next x
FIN:
   Application.DisplayAlerts = False: sx.Delete: Application.DisplayAlerts = True
End Sub
 

Pièces jointes

Dernière édition:
@mapomme merci beaucoup pour ton message.
J'ai essayé de mettre ta macro dans un module sur mon document mais cela ne fonctionne pas.
J'ai copié 5 cellule sur mon googlesheet, je suis retourné dans mon doc excel ou il y a la macro, Ctrl+h (ou lancement manuel de la macro) en me positionnant sur la première cellule ou je veux coller mes données, mais rien....
Ci-joint la capture d'écran de l'endroit ou je veux coller.
ATTENTION, les lignes masquées varient d'un classeur à l'autre....
 

Pièces jointes

  • 2023-03-27_094905.png
    13.5 KB · Affichages: 6
J'ai copié 5 cellule sur mon googlesheet
Je ne connais pas gogolesheet mais je suis à peu près certain que ça ne marche pas avec ma macro.
Ma macro fonctionne avec Excel et devrait fonctionner sur MAC et Excel.
Il faut sans doute revenir à des API pour retirer ce qu'il faut du presse-papier mais dans ce cas plus de compatibilité avec Mac. Et comme je n'aime pas les API... D'autres pourront te le faire.
 
ok, merci
 
Re,

Une autre tentative toujours sans API (ça bricole, ça bricole 🤪).

J'ai testé à partir de Google Sheets.
La macro devrait fonctionner à partir d'une copie à partir de Google Sheets et aussi à partir d'une copie d'Excel lui-même.

La méthode :
  • copier une plage à partir de Google Sheet (ou Excel)
  • sélectionner la feuille "Plage Filtre"
  • sélectionner une cellule de la plage filtrée
  • Tapez la combinaison des deux touches Ctrl+h (ou exécuter directement la macro PressPapExcel dans module1)
nota : pour l'instant, on ne copie que les valeurs. S'il faut aussi copier les formats, me le signaler.

La macro dans module1 :
VB:
Sub PressPapExcel()
Dim actCell As Range, sx As Worksheet, xrg As Range, x, rep

   Application.ScreenUpdating = False
   Set actCell = ActiveCell
   Set sx = Worksheets.Add
   On Error GoTo Err1
   sx.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
   Set xrg = Selection
   If Not xrg Is Nothing Then
      'confirmation
      Application.ScreenUpdating = True: DoEvents
      rep = MsgBox("Voici ce qu'on va coller sur la plage filtrée." & vbLf & vbLf & _
            "Voulez-vraiment coller ces cellules ?", vbQuestion + vbYesNo + vbDefaultButton2)
      Application.ScreenUpdating = False
      If rep = vbYes Then
         For Each x In xrg.Columns(1).Cells
            Do While actCell.EntireRow.Hidden = True: Set actCell = actCell.Offset(1): Loop
            actCell.Resize(, xrg.Columns.Count) = x.Resize(, xrg.Columns.Count).Value
            Set actCell = actCell.Offset(1)
         Next x
      End If
   End If
   Application.DisplayAlerts = False: sx.Delete: Application.DisplayAlerts = True
   Exit Sub

Err1:
   ' à priori peut-être pas en provenance de gogole mais d'Excel peut-être
   sx.Paste
   Resume Next

End Sub
 

Pièces jointes

Dernière édition:
Trop la classe !!! Magnifique ça marche nikel !!!
Merci beaucoup !!!
 
Bonjour à tous

@Arnaud Legay

Mon fichier fonctionne comme tu le dit conformément à ta demande du post#3 ou tu as fourni un fichier.
Le but est donc de copier les noms de la feuille2, et de les coller dans les cellules A159, A161 et A191
Maintenant tu fait une autre demande
Mon problème est que les données que je copie sont sur un classeur google (googlesheet), dans différents onglets, et que les cellules où je veux les coller varient aussi d'un classeur à un autre....

@Phil69970
 
Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

Réponses
5
Affichages
397
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…