Probleme copier coller presse papier

Bonjour,

Quand je copie des données provenant d'un autre fichier et que je les colle via une macro dans une feuille excel alors j'ai les virgules de mes données qui deviennet des espaces.

Comment faire pour coller les données avec les virgules.

voici mon code tout simple :

With Worksheets("données tampon")
        .Paste
        .Range("A1").Value = Me.ComboBox1.Value & " " & Me.ComboBox2.Value
        .Range("B1").Value = Me.ComboBox1.Value & " " & Me.ComboBox2.Value
        .Copy
        .Cells.Clear
End With

Personne pour m'aider?

merci d'avance

Bonjour

lolo34140 a écrit :

Personne pour m'aider?

Ah si il y a du monde mais des fois le monde il en a marre de répéter

, alors il regarde et quitte

Tu n'es pas nouveau sur ce site et tu connais ce principe

Un fichier n'aiderait en rien car personne n'a le logiciel d'où je copie mes données et de plus le code de ma macro correspond juste au quelques ligne ci dessus.

Je pense que c'est dans ces genre de cas que l'utilité des balises "code" du forum prend plus de sens qu'un fichier inutile.

Enfin bref.

Je pense que c'est un pastespecial qu'il me faut mais je sais pas quoi!

Je joins un fichier avec ce que j'obtiens avec la macro et avec un copier coller manuel.

Le copier coller manuel est ce que j'aimerai obtenir. Mais je ne comprend pas pourquoi avec une macro ça me change le format.

Quand j'enregistre une macro du copier-coller manuellement j'obtiens quand même avec cette macro une modification du format des nombres.

Excel est illogique parfois!

Je ne comprends vraiment pas pourquoi ça fait ça!

33m151aa.zip (33.34 Ko)

Personne pour m'aider!

Bonjour

lolo34140 a écrit :

Je joins un fichier avec ce que j'obtiens avec la macro et avec un copier coller manuel.

lolo34140 a écrit :

Personne pour m'aider!

Tu ne donnes qu'une partie de l'information, un fichier avec des colonnes, qui viennent de l'on ne sait où et avec ça il faudrait trouver la cause du problème

Où est la macro ?

Ou sont les données que l'on doit copier ?

Comment veux tu que l'on refasse ce que tu as fait pour avoir ce problème si l'on n'a pas tout

Pour toi je ne sais pas mais moi je n'arrive pas à deviner

Quelqu'un de plus fort trouvera

Mes données sont copiées à partir d'un programme professionnel qui n'est pas excel. En fait je copie les données dans ce programme avec ctrl+c et je colle dans excel via un userform avec un bouton.

Je sais que le problème vient du format des nombres. En fait excel me remplace les virgules par des espaces quand j'utilise ma macro pour coller (en plus il ne remplace pas systématiquement les virgules). Ce qui est bizarre c'est que quand je fait la manipulation du copier coller vers excel sans macro (avec ctrl + c (dans mon programme professionnel) et ctrl + v (dans excel)) le format des nombres ne change pas.

Je pense que la gestion du presse papier en macro est différente de ctrl+c et ctrl+v .

Je joins mon fichier avec la macro (voir userform1 pour le code). Mais je pense que cela ne devrait pas aider plus que ça.

46essai.zip (167.25 Ko)

Hi

Essayes du côté du séparateur de décimale...

With Application

.DecimalSeparator = ","

.UseSystemSeparators = False

End With

ou

With Application

.DecimalSeparator = "."

.UseSystemSeparators = False

End With

regardes le résultat en fonction de l'un ou de l'autre et dis nous comment ça réagit sur "ta bécane".

Y++

yakafo a écrit :

Hi

Essayes du côté du séparateur de décimale...

With Application

.DecimalSeparator = ","

.UseSystemSeparators = False

End With

ou

With Application

.DecimalSeparator = "."

.UseSystemSeparators = False

End With

regardes le résultat en fonction de l'un ou de l'autre et dis nous comment ça réagit sur "ta bécane".

Y++

Merci mais aucun des 2 codes ne marche. Ça ne change rien.

Bonjour

C'est sur que sans les données à copier pas évident de suivre

Je ne peux que te donner une méthode à suivre pour savoir si c'est la copie qui pose problème

A partir de

 With Worksheets("données tampon")

tu fais du pas à pas et tu regardes ce qui se passe

      With Worksheets("données tampon")
        '.Paste
        .PasteSpecial Paste:=xlPasteValues
        '.PasteSpecial Paste:=xlPasteFormats
        .Range("A1").Value = Me.ComboBox1.Value & " " & Me.ComboBox2.Value
        .Range("B1").Value = Me.ComboBox1.Value & " " & Me.ComboBox2.Value
        .Copy             ' Inutile
        '.Cells.Clear
      End With

Suis désolé mais ce qui est sur c'est que sans toutes les données du problèmes, trouver une solution n'est pas évident du tout

Ok. Merci.

Quand ça colle, ça colle (dans la feuille données tampon) dans le mauvais format sans les virgules et avec un espace à la place.

Par contre un .PasteSpecial plante toujours. La macro fonctionne qu'avec un .Paste.

Sinon je pensais à une alternative qui marche. En fait avant je collais mes données copier de mon logiciel dans un spreadsheet d'un userform. Et là ça marchait très bien. Le seul gros problème c'est qu'un spreadsheet dans un userform nécessite un compléméent excel qui marche une fois sur deux.

Existe t-il quelque chose d'équivalent à un spreadsheet dans un userform ou on peut coller en 1 clic pleins de données sur deux colonnes ou plus.

ne marchent ? ou ne changent rien ? ... ce n'est pas pareil.

ca change rien

Je me demandais si en passant par notepad je peux résoudre mon problème.

Quand je colle dans notepad mes données, le format des nombres est bon.

Par contre quand je copy du notepad et colle dans excel j'ai le même problème de format de nombre sans virgule.

Comment bien convertir en .txt vers .xls. Je n'arrive vraiment pas à comprendre mon problème de format de nombre.

voici mon code pour coller copier notepad :

Shell "notepad.exe", vbNormalFocus
      SendKeys "^v", 20000
      SendKeys "^a", 20000
      SendKeys "^c", 20000

je joins le fichier .txt que j'obtiens avec la macro:

33essai.txt (17.05 Ko)

j'ai essayé avec ce code mais le problème reste le même!!

Shell "notepad.exe", vbNormalFocus
      SendKeys "^v", 20000
      SendKeys "^s", Wait:=True
      SendKeys "%n", Wait:=True
      SendKeys ThisWorkbook.Path & "\Données tests\" & Me.TextBox1 & "\" & _
                    Me.ComboBox1 & Me.ComboBox2 & "-" & Me.TextBox1 & ".xls{Enter}", Wait:=True
      SendKeys ("%{F4}")
      Workbooks.Open (ThisWorkbook.Path & "\Données tests\" & Me.TextBox1 & "\" & _
                    Me.ComboBox1 & Me.ComboBox2 & "-" & Me.TextBox1 & ".xls")

Par contre c'est très étrange. Si j'ouvre manuellement le fichier .xls créé via la macro alors j'ai dans les cellules du fichier les nombres sous formats texte avec virgules. Cela me dérange pas car il est simple dans ce cas de modifier le format pour passer en valeur. Cependant je dois absolument passer par une macro.

Mais si j'ouvre le fichier avec une macro alors les virgules disparaissent par magie et le tout devient des nombres à l'anglaise avec des espaces. Et cela ne va pas du tout car il y a des zeros qui apparaissent.

Le problème vient du coller au niveau du format. Les valeurs que je copie de mon programmes sont stockées sous format texte et je sais pas comment les transformer en nombre lorsque je colle. Du moins je n'y arrive pas.

J'ai vraiment besoin d'aide.

personne pour m'aider?

J'arrive vraiment pas à trouver de solution.

Quelqu'un aurait une solution alternative pour mon problème.

Est-il possible de coller 2 colonnes dans un textbox d'un userform qui renvoie les valeurs dans la feuille excel?

J'ai enfin trouvé la solution.

Par contre j'ai encore un problème.

Cette fois ci, je n'arrive pas à renomer le nom de la feuille du fichier excel que je crée avec ma macro.

Le nom de la feuille est celui du fichier. je ne comprend pas pourquoi. Je voudrai que la feuille ait le nom "données"

Voici le code:

Private Sub CommandButton1_Click()
Dim lgLig As Long
Dim MyFile As String
Dim i As Integer

If Me.ComboBox1.ListIndex = -1 Or Me.ComboBox2.ListIndex = -1 Or Trim(Me.TextBox1) = "" Then
    MsgBox "Renseignements incomplets"
    Exit Sub
  End If

  Select Case Me.TextBox1
    Case "DT", "QT", "VT", "CP"

MyFile = Dir(ThisWorkbook.Path & "\Données tests\" & Me.TextBox1 & "\" & _
                    Me.ComboBox1 & Me.ComboBox2 & "-" & Me.TextBox1 & ".xls")
If MyFile <> "" Then
MsgBox "Fichier de données existant pour cette référence"
Else
Application.ScreenUpdating = False
    Application.DisplayAlerts = False
      Shell "notepad.exe", vbNormalFocus
      SendKeys "^v", 20000
      SendKeys ("^h")
      SendKeys (",")
      SendKeys ("{TAB}")
      SendKeys (".")
      SendKeys ("{TAB}")
      SendKeys ("{TAB}")
      SendKeys ("{TAB}")
      SendKeys ("{TAB}")
      SendKeys ("{enter}"), Wait:=True
      SendKeys ("%{F4}")
      SendKeys ("^s"), Wait:=True
      SendKeys ("%n"), Wait:=True
      SendKeys ("{enter}")
      SendKeys ThisWorkbook.Path & "\Données tests\" & Me.TextBox1 & "\" & _
                    Me.ComboBox1 & Me.ComboBox2 & "-" & Me.TextBox1 & ".xls{Enter}", Wait:=True
      SendKeys ("%{F4}")
      Workbooks.Open (ThisWorkbook.Path & "\Données tests\" & Me.TextBox1 & "\" & _
                    Me.ComboBox1 & Me.ComboBox2 & "-" & Me.TextBox1 & ".xls")
      With ActiveWorkbook
      With ActiveSheet
        i = 3
        Do
        .Range("A" & i).Value = .Range("A" & i).Value * -1
        i = i + 1
        Loop Until Range("A" & i).Value = ""

      .Range("A1").Value = Me.ComboBox1.Value & " " & Me.ComboBox2.Value
      .Range("B1").Value = Me.ComboBox1.Value & " " & Me.ComboBox2.Value
      .Name = "Données" 
      ActiveWorkbook.Save
      ActiveWorkbook.Close
    End With
    End With
      Unload Me
      Unload UserForm4
    End If
    Case Else
    MsgBox "Référence inconnue"
    End Select
    Application.DisplayAlerts = True
End Sub

en fait quand j'ouvre le fichier que j'ai enregistré via la macro alors le nom de la feuille change tout seul en nom du fichier.

Je ne comprend vraiment pas pourquoi. Ça n'a aucun sens

Rechercher des sujets similaires à "probleme copier coller presse papier"