Soucis de copier coller

Salut a tous, Forum salut,

Lorsque je me rends sur mon site bancaire, je recopie le montant de mon solde par un copier coller.

Puis je vais le coller dans ma comptabilité sous cette forme Ex: 568.24 € ca fonctionne très bien

Mais lorsque le chiffre est plus grand Ex: 1 472.35 € Là ça ne fonctionne plus

Alors j'ai essayer de faire un copier coller avec un chiffre comme 1472.35 € et là ca fonctionne bien.

J'en déduit que mon test ci dessous n'ai pas bon car dès qu'il voit un espace dans le chiffre , ca ne fonctionne plus

Merci de votre aide et bon W-end a tous.

Cdlt Ray

'*** TEXTBOX(1) ON ENTRE LE SOLDE BANQUAIRE COPIER-COLLER VERS FEUIL1(COMPTE) CELLULE (C20) SOLDE COPIER SUR SITE BANQUAIRE
'###

Private Sub TextBox1_Change()
 Dim Couleur As Long: Dim Pos As Integer

  If Len(TextBox1) = 0 Then Exit Sub
  If Left(TextBox1, 1) = "-" Then
     Pos = 1
  End If

  If Len(TextBox1) > Pos Then
    If Not IsNumeric(Mid(TextBox1, Pos + 1)) Then
           TextBox1 = ""
      Exit Sub
    End If
  End If

     Couleur = vbGreen
     Ws.Range("C20") = Val(Replace(TextBox1.Value, ",", "."))   'Copier vers la cellule C20 en décimal
  If Ws.Range("C20") < 0 Then                                                'Si inférieur a zéro alors Rouge
        Couleur = vbRed
  End If

  Label425.Caption = Format(Ws.Range("C20"), Euro)             'Affiche en euros dans Label425
  Label425.ForeColor = Couleur

  For i = 1 To 12
       Controls("Label" & i + 216).Caption = Format(Ws.Cells(20, i + 4), Euro)  'Ligne 20 et Label 217:228

    If Ws.Cells(20, i + 4) < 0 Then
       Controls("Label" & i + 216).ForeColor = vbRed
    Else
       Controls("Label" & i + 216).ForeColor = vbGreen
    End If
  Next i
End Sub

bonjours sa ne serais pas ton format cellule sur ta feuille ecxel qui n irait pas

attention je ne suis pas un expert (je propose juste une idée)

Bonjour,

Essaie de remplacer :

Ws.Range("C20") = Val(Replace(TextBox1.Value, ",", "."))

par

Replace TextBox1.Value, " ", ""
Replace TextBox1.Value, Chr(160), ""
Range("C20") = Val(Replace(TextBox1.Value, ",", "."))

Daniel

Salut a vous,

Merci pour vos réponses,

Pas tous compris désoler, pour faire la modification proposée.

Tu veux bien faire la modification pour moi en reprenant le code qui

d'ailleurs n'ai pas de moi mais de personnes du forum voici longtemps.

Merci d'avance

Cdlt Ray

Bonjour Eliot Raymond,

Le souci ne vient pas de ton code. Mais du copier-coller.

Choisis un collage en valeur, ce qui formatera le nombre copié et non un collage tel quel qui reproduira le format de ton relevé bancaire.

Salut X Cellus

Merci pour ta réponse,

tu peux expliquer svp , je suis dur aujourd'hui Lol, je comprends pas ou tu veux en venir ???

Merci a toi

A nouveau,

Voir sur l'image ci-dessous la différence. J'ai copié la valeur que tu as indiqué à la ligne de ton message. Comme tu le fais avec ton relevé bancaire.

Mais lorsque le chiffre est plus grand Ex: 1 472.35 € Là ça ne fonctionne plus

image

Si la copie du nombre est réalisé comme à gauche sur l'image et que l'on change le point par une virgule pour l'adapter au format numérique de la feuille.

En additionnant avec une autre valeur cela donnera une erreur.

Alors que si tu as choisis la méthode de droite, c'est à dire en respectant la mis en forme de destination la somme, après le changement point-virgule sera correcte.

Parce qu'Excel aura bien reconnu son format. Et la propriété value de ton textbox fera de même. Lorsque ton code remplacera le point par la virgule.

Re X Cellus

Merci pour ta réponse,

Donc si je comprends bien hum Lol, je modifie selon le code proposer par l'ami C Daniel ???

Vais essayer ca demain matin, pour l'heure, c'est plus l'heure LOL

Encore merci, je vais cogiter ca cette nuit qui porte conseil dit t'on

Bonne soirée a toi et merci bien

Cdlt Ray

Salut a tous,

Bon je fait des essais depuis ce matin, mais je n'arrive pas a placer le code de l'ami Daniel C

sur mon code.

j'ai essayer d'insérer le code a divers endroit de mon code, mais ca ne fonctionne pas ???

Voila, bon dimanche a tous et merci.

Cdlt Ray

Bonjour à tous,

Essaie :

Private Sub TextBox1_Change()
 Dim Couleur As Long: Dim Pos As Integer

  If Len(TextBox1) = 0 Then Exit Sub
  If Left(TextBox1, 1) = "-" Then
     Pos = 1
  End If

  If Len(TextBox1) > Pos Then
    If Not IsNumeric(Mid(TextBox1, Pos + 1)) Then
           TextBox1 = ""
      Exit Sub
    End If
  End If

     Couleur = vbGreen
  Replace TextBox1.Value, " ", ""
  Replace TextBox1.Value, Chr(160), ""
  Range("C20") = Val(Replace(TextBox1.Value, ",", "."))
  If Ws.Range("C20") < 0 Then                                                'Si inférieur a zéro alors Rouge
        Couleur = vbRed
  End If

  Label425.Caption = Format(Ws.Range("C20"), Euro)             'Affiche en euros dans Label425
  Label425.ForeColor = Couleur

  For i = 1 To 12
       Controls("Label" & i + 216).Caption = Format(Ws.Cells(20, i + 4), Euro)  'Ligne 20 et Label 217:228

    If Ws.Cells(20, i + 4) < 0 Then
       Controls("Label" & i + 216).ForeColor = vbRed
    Else
       Controls("Label" & i + 216).ForeColor = vbGreen
    End If
  Next i
End Sub

Daniel

Salut Daniel C

Merci pour ta réponse,

j'ai recopier le code modifier mis cette partie en remarque et recopier dans mon code, hélas ca ne fonctionne pas du tout, mais ca plante pas ni d'erreur

donc je ne sais pas plus.

Bon dimanche a toi

Cdlt Ray

Bonjour Elior Raymond, Le Fil,

Avec ce code ci-dessous cela fonctionne très bien sur mon classeur.

Private Sub TextBox1_Change()
Dim V As Double
V = Replace(TextBox1.Text, ".", ",")
Range("C20") = CDbl(V)
End Sub

Note: Ne pas copier avec le symbole monétaire.

Salut X Cellus

Merci pour ta réponse le code

j'ai essayer mais j'ai une fenêtre qui s'ouvre et qui erreur d'exécution "13" incompatibilité de type

avec en jaune le code suivant

V = Replace(TextBox1.Text, ".", ",")

Merci pour ton code
Cdlt Ray

Suite,

Merci de créer un mini fichier avec un formulaire présentant un ou deux textbox.

D'ajouter ta valeur du relevé, copiée (solde) telle qu'elle, comme tu as l'habitude de faire, dans n'importe quelle cellule en haut de la première feuille.

C'est cette valeur que l'on pourra récupérer pour l'insérer dans un textbox et tester le code permettant de récupérer une valeur correcte en C20.

Sur la feuille c'est bien des nombres avec virgule que tu manipules et non avec des points?

Re X Cellus

Pas possible de faire un semblant de fichier, le mien est hyper compliquer, la personne qui m'a aider a le créer est un hyper costaud du vba

tout se mords la queue, je vais pas m'étendre trop difficile.

Donc pas grave je vais laisser comme ca, voie le lien ci dessous.

il faudrait que j'enlève les données perso et encore pas sur pour moi d'y parvenir, ca fait longtemps déjà.

Mais merci tout de même d'avoir pris le temps de regarder mon soucis

Encore merci a toi et Daniel et tous

Cdlt Ray

compta

A nouveau,

Ce n'est pas ton fichier qui m'intéresse c'est uniquement la partie TextBox1.

Bon je te laisse un code sous forme de boucle et tu regardes si cela fonctionne globalement.

Sinon on regardera chaque caractère du TextBox en inscrivant un stop.

Private Sub TextBox1_Change()
'En début du code du textbox1
Call Modif
End Sub
Private Sub Modif()
Dim T As String, C As Integer
For C = 1 To Len(TextBox1)
T = Mid(TextBox1, C, 1)
If T > "/" Then Text = Text & T
If T = "." Then Text = Text & ","
Next C
Range("C20") = CDbl(Trim(Text))
End Sub

Note : cette boucle sera appelée uniquement si la valeur est au dessus de 999

Re X Cellus

Merci pour ta réponse et le code

j'ai essayer mais j'ai erreur de déclaration de variable "Text"

je mets quoi svp ???

Merci

suite,

rajoute Text comme String. Puisqu'il reçoit tous les caractères du Textbox

Dim T, Text As String, C As Integer

Re X Cellus

j'ai variable non déclarer maintenant "Text"

Je n'ai pas l'intégralité de ton code, donc je ne sais pas quoi te répondre.

On va mettre autre chose.

Private Sub TextBox1_Change()
'En début du code du textbox1
Call Modif
End Sub

Private Sub Modif()
Dim T, Mot As String, C As Integer
For C = 1 To Len(TextBox1)
T = Mid(TextBox1, C, 1)
If T > "/" Then Mot= Mot & T
If T = "." Then Mot = Mot & ","
Next C
Range("C20") = CDbl(Trim(Mot))
End Sub

Vérifie que tu n'as mot cette variable Mot ailleurs dans ton module. De toute façon tu auras un message

Rechercher des sujets similaires à "soucis copier coller"