VBA supprimer caractère dans une cellule aléatoire d'un range
Répondre à la discussion
Affichage des résultats 1 à 19 sur 19

VBA supprimer caractère dans une cellule aléatoire d'un range



  1. #1
    invite9fb11ebe

    VBA supprimer caractère dans une cellule aléatoire d'un range


    ------

    Bonjour,
    Je suis toujours sur ma macro ... j'en cauchemarde...

    J'ai une feuille qui contient des données (valeurs en % au format x.xx, exemple: 0.42)
    Simplement, dans certains cas, lorsque la valeur mesurée est proche de la limite de détection de l'appareil il y a un "~" devant la valeur, soit par exemple; ~0.122
    Du coup, lorsque je veux faire des calculs avec mes valeurs, ce n'est pas possible avec les valeurs devant lesquelles il y a le "~"..

    Est il possible de faire une sorte de "remplacer" sur toute la feuille, en remplaçant "~" par "" (rien).

    Merci!

    -----

  2. #2
    inviteeecca5b6

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Hello,

    Tu peux le faire à la main avec wordpad, en utilisant la fonction remplacer.

    Pour le faire automatiquement, tu peux utiliser la commande shell (disons que tes infos sont dans MonSuperFichier.txt)
    Code:
    sed 's/~//g' MonSuperFichier.txt > MonSuperNouveauFichier.txt
    Le fichier MonSuperNouveauFichier.txt sera identique sans les ~

  3. #3
    invite9fb11ebe

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Salut,
    j'utilise excel 2007

  4. #4
    inviteeecca5b6

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Il dit qu'il voit pas le rapport

  5. A voir en vidéo sur Futura
  6. #5
    invite9fb11ebe

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Je ne comprends pas pourquoi tu parles de fichiers .txt..... désolé j'ai oublié de dire que j'étais débutant

  7. #6
    Spazi

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Code:
    Public Sub Tilde()
        For Each c In Range("B1", "B7")
            c.Value = Replace(c.Value, "~", "")
        Next
    End Sub
    Vous changez le range pour ce qui vous correspond

  8. #7
    invite9fb11ebe

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Spazi je dois définir "c" en variable?
    si oui quel type?
    ni string ni range ne fonctionne

  9. #8
    invite2800a7c8

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Citation Envoyé par fleur2touraine Voir le message
    Bonjour,
    Je suis toujours sur ma macro ... j'en cauchemarde...

    J'ai une feuille qui contient des données (valeurs en % au format x.xx, exemple: 0.42)
    Simplement, dans certains cas, lorsque la valeur mesurée est proche de la limite de détection de l'appareil il y a un "~" devant la valeur, soit par exemple; ~0.122
    Du coup, lorsque je veux faire des calculs avec mes valeurs, ce n'est pas possible avec les valeurs devant lesquelles il y a le "~"..

    Est il possible de faire une sorte de "remplacer" sur toute la feuille, en remplaçant "~" par "" (rien).

    Merci!
    Salut,

    Je ne sais pas avec quoi tu programmes,
    Il faut mettre ta valeur dans une chaine de caractère, regarder si le premier caractère est un " ~ " Valeur 126 décimal ou 7E hexadécimal si oui diminuer la chaine de 1
    Avec C ça ne devrait pas poser de PB, VBA non plus d'ailleurs

    Cordialement


    Cordialement

    Ludwig

  10. #9
    invite9fb11ebe

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    salut, je suis sous EXCEL VBA

  11. #10
    invite948b37db

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Citation Envoyé par fleur2touraine Voir le message
    il y a un "~" devant la valeur, soit par exemple; ~0.122
    Du coup, lorsque je veux faire des calculs avec mes valeurs, ce n'est pas possible avec les valeurs devant lesquelles il y a le "~"..
    Pourquoi ne pas utiliser le Chercher-Remplacer d'Excel ?
    https://support.office.com/fr-fr/art...f-fdb42f892e90

  12. #11
    invite9fb11ebe

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Cela ne fonctionne pas, il ne trouve aucune cellule contenant le caractere a chercher ....


    ziiii.JPGziiii.JPG
    Images attachées Images attachées  

  13. #12
    Spazi

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Citation Envoyé par fleur2touraine Voir le message
    Spazi je dois définir "c" en variable?
    si oui quel type?
    ni string ni range ne fonctionne
    Non, il n'y a pas besoin de définir c
    Ma macro marche sur excel 2010, et je ne pense pas que 2007 n'est pas de "for each" donc, ça devrait marcher tel quel (en modifiant juste la plage de données)
    Dernière modification par Spazi ; 09/03/2017 à 12h35.

  14. #13
    invite948b37db

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Citation Envoyé par fleur2touraine Voir le message
    Cela ne fonctionne pas,
    Ca fonctionne parfaitement avec Open Office Calc donc ça DOIT fonctionner avec XL !
    Sinon par fonctions :
    =SI(GAUCHE(A1;1)="~";DROITEB(A 1;NBCAR(A1)-1);A1)

  15. #14
    invite9fb11ebe

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    En utilisant,

    Code:
       For Each c In Range("B1", "B7")
            c.Value = Replace(c.Value, "~", "")
        Next
    Il me trouve une erreur '13' incompatibilité de type

  16. #15
    invite9fb11ebe

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Citation Envoyé par cherbe Voir le message
    Ca fonctionne parfaitement avec Open Office Calc donc ça DOIT fonctionner avec XL !
    J'ai mis un impr écran... ça veut pas

  17. #16
    invite0bbe92c0

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Citation Envoyé par fleur2touraine Voir le message
    Il me trouve une erreur '13' incompatibilité de type
    Mettre une variable intermédiaire pour voir si l'incompatibilité est dans l'affectation ou dans la récupération de la valeur.
    Autre possibilité, essayer :

    Code:
     c.Value = Replace(CStr(c.Value), "~", "")

  18. #17
    invite6486d7bd

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Lorsqu'on veut faire une opération sur les cellules du tableur Excel, il faut se poser la question de savoir si ce qu'on voit ... est bien ce que contient la cellule.
    A la base, la cellule contient des octets, qui peuvent être considérés comme des caractères d'une chaine, ou faisant partie de la valeur d'une date, ou faisant partie de la valeur d'un entier, ou d'un nombre à virgule etc etc.
    Si vous recherchez le caractère '~', et si la cellule est de type nombre à virgule, vous ne le trouverez pas.
    Le '~' c'est ce qu'on voit (ce qui apparait lorsqu'on regarde le tableau).

    Par exemple, une date contient en interne (format interne) un entier qui fournir le nombre de secondes écoulées depuis je ne sais quelle date). C'est un entier.
    Mais vous pouvez le faire s'afficher sous la forme que vous voulez, du moment que le format de la cellule est de type Date.
    Qui peut ensuite être affiché plus finement, puisque c'est une date, selon des paramètres suplémentaires, n'affichant par exemple que le jour, l'heure ou que sais-je.

    Donc, concernant votre problème, on peut faire comme ça (il y a plusieurs méthodes possibles, mais il faut bien comprendre le format de chaque variable et cellule) : Si vous copiez préalablement la cellule contenant le signe ~ fictif vers une cellule à format chaine, vous aurez alors une chaine dans cette nouvelle cellule, dans laquelle vous pouvez détecter le caractère ~.
    Vous pouvez alors l'enlever, pour recopier ensuite la chaine vers la cellule initiale, au format nombre à virgule (la conversion automatique peut se faire, si la chaine est convertible)

    (Je ne pratique plus trop VBA donc j'espère n'avoir pas dit de bêtises, les spécialistes me corrigeront. )

  19. #18
    invite0bbe92c0

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Citation Envoyé par LeMulet Voir le message
    Lorsqu'on veut faire une opération sur les cellules du tableur Excel, il faut se poser la question de savoir si ce qu'on voit ... est bien ce que contient la cellule.
    Le problème n'est pas ce que contient la cellule mais l'inférence de type qui en résulte.

    Et la propriété Value d'une cellule n'est pas une chaine mais un variant; donc pour l'exploiter comme une chaine, comme le réclame la fonction Replace, il fait le convertir.

    je ne pratique pas le VBA mais a priori c'est ce qui me vient à l'esprit.

  20. #19
    invite9fb11ebe

    Re : VBA supprimer caractère dans une cellule aléatoire d'un range

    Génial!!!
    Ca fonctionne comme ça,
    j'ai ajouté une deuxieme ligne car il changeait le point en virgule, je récupère mon point et les formules fonctionnent derrière.
    Merci à tous!!!

    Code:
       For Each c In Range("B1", "B7")
             c.Value = Replace(CStr(c.Value), "~", "")
             c.Value = Replace(CStr(c.Value), ",", ".")
        Next

Discussions similaires

  1. supprimer une partie de cellule
    Par fox57 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 25/08/2013, 17h01
  2. caractère aléatoire d'une désintégration radioactive
    Par invitee0b6f537 dans le forum Physique
    Réponses: 7
    Dernier message: 30/04/2009, 15h53
  3. [Biologie végétale] caractére de cellule meristématiques
    Par invitef923fd74 dans le forum Biologie
    Réponses: 7
    Dernier message: 03/03/2008, 16h46
  4. Caractère aléatoire de la désintégration radioactive
    Par invite776a26e4 dans le forum Physique
    Réponses: 2
    Dernier message: 18/03/2005, 10h36
  5. Tpe sur le caractère aléatoire du Golf
    Par invitecff02a74 dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 30/01/2004, 20h57