Copier le contenu d'une cellule Excel dans une appli non-windows

Pour ouvrage, la phrase vient d'un userform, qui permet les guillemets

Et sinon, votre solution me va parfaitement, je la réutiliserai tant que de besoin, merci!

Mais ma solution m'est utile car, dans la macro principale (surement un monstre, à vos yeux!), je passe de la cellule à copier à d'autres, adjacentes; selon les informations contenues, le processus diffère, à chaque ligne...

Après plusieurs tests, la macro se comporte de manière erratique: parfois elle ne copiecolle pas! mais elle continue à se dérouler imperturbablement...

Un peu de mystère dans ce monde binaire?

Bonjour,

Dans l'état, difficile de vous donner beaucoup d'explications, j'ai peu de visibilité sur le projet. Je suspecte la copie d'etre le problème, c'est pourquoi je vous joins ci-après un appel à une nouvelle fonction custom, pour copier directement vers le presse papier la valeur de vos cellules. En effet le .Copy en VBA par défaut ne fonctionne pas exactement comme ça de ce que j'ai compris. Il est plutot destiné à un usage interne à Excel/l'app, donc utiliser le presse-papier windows devrait corriger le problème.

Le code vient de Excel VBA code to copy a specific string to clipboard - Stack Overflow

A adapter à votre code final, c'est uniquement la ligne c.Copy qui a été changée.

Function Clipboard$(Optional s$)
  ' from https://stackoverflow.com/questions/14219455/excel-vba-code-to-copy-a-specific-string-to-clipboard/60896244#60896244
    Dim v: v = s  'Cast to variant for 64-bit VBA support
    With CreateObject("htmlfile")
    With .parentWindow.clipboardData
        Select Case True
            Case Len(s): .setData "text", v
            Case Else:   Clipboard = .GetData("text")
        End Select
    End With
    End With
End Function

Sub Boucle()
  ' definition de la plage des cellules pleines apres C8
  Dim maPlage As Range
  With ActiveSheet.Range("C8")
    Set maPlage = Range(.Cells, .End(xlDown))
  End With

  For Each c In maPlage
    Clipboard (c.Value)
    If MsgBox("Cliquez sur [Ok], puis cliquez dans la fenetre ""ouvrage"" dans Decalog", vbOKCancel) = vbOK Then
      MaMacro
    End If
  Next c
End Sub

Merci beaucoup!

Mais je me suis rendu compte qu'en mettant sendkeys dans une shell, ça marche (apparemment...)!

<With CreateObject("WScript.Shell")
Application.SendKeys "^v"
End With>

Si je constate un dysfonctionnement, je tâcherai d'appliquer votre nouvelle méthode.

Rechercher des sujets similaires à "copier contenu appli windows"