Microsoft 365 coller uniquement dans les cellules non filtrées

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

Arnaud Legay

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

  • copier-coller-lignes-masquees.xlsm
    42.5 KB · Affichages: 4

JHA

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

Arnaud Legay

XLDnaute Nouveau
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" ;-)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
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

  • Arnaud Legay- coller sur cellules visibles- v2a.xlsm
    21.8 KB · Affichages: 3
Dernière édition:

Arnaud Legay

XLDnaute Nouveau
@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
    2023-03-27_094905.png
    13.5 KB · Affichages: 5

mapomme

XLDnaute Barbatruc
Supporter XLD
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.
 

Arnaud Legay

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

mapomme

XLDnaute Barbatruc
Supporter XLD
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

  • Arnaud Legay- coller cellules visibles- v3.xlsm
    29.2 KB · Affichages: 1
Dernière édition:

Arnaud Legay

XLDnaute Nouveau
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
Trop la classe !!! Magnifique ça marche nikel !!!
Merci beaucoup !!!
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous

@Arnaud Legay

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

Discussions similaires

Statistiques des forums

Discussions
312 213
Messages
2 086 302
Membres
103 174
dernier inscrit
OBUTT