IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

enlever le = d'une formule afin d'obtenir une chaine de caractères


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 34
    Par défaut enlever le = d'une formule afin d'obtenir une chaine de caractères
    Bonjour,

    J'ai un petit soucis avec une colonne dans excel.

    Ce qui se passe :
    Je converti un fichier txt en classeur excel. Lorsqu'une cellule commence par "-" et est suivi de texte (et non de chiffres), excel convertit la cellule en formule en mettant un "=" devant et indique par conséquent #NOM? dans la cellule.

    Ceci ne m'est vraiment pas utile, car lors du traitement postérieur de la colonne, je me retrouve avec des incompatibilités de types.

    Il y a t'il un moyen pour enlever ce "=" ?
    Quel est le format d'une formule ?

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(NoLig, NoCol) = "'" & Cells(NoLig, NoCol)
    l'apostrophe placée en début de formule dit à Excel de considérer le contenu de la cellule comme du texte.
    Bonne journée

    NB - Tu peux aussi utiliser Cells(NoLig, NoCol).formula pour modifier la formule avec mid
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(NoLig, NoCol).formula = Mid(Cells(NoLig, NoCol).formula, 2, len(Cells(NoLig, NoCol).formula)-1)
    (pas testé)

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 34
    Par défaut
    Merci, ça fonctionne !

    Mais quel est le test pour savoir si une cellule contient une formule ?
    Je veux appliquer le traitement à chaque cellule de ma colonne, mais uniquement s'il s'agit d'une formule.

    Avec ce code il enlève le premier caractère de chaque cellule non vide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        Dim NoLig As Integer
        Dim NoCol As Integer
        NoCol = 3
        For NoLig = 1 To 90
            If Cells(NoLig, NoCol) <> "" Then
                Cells(NoLig, NoCol).Formula = Mid(Cells(NoLig, NoCol).Formula, 2, Len(Cells(NoLig, NoCol).Formula) - 1)
            Else
     
            End If
        Next NoLig

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut lionhigh et le forum
    Question au hazard : tu parles de convertir un fichier texte.
    est-ce que tu as mis la colonne réceptrice en format Texte ?
    A+

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Le premier caractère est
    - dans une formule, le signe "="
    - dans une valeur négative le signe "-"
    Tu testes le premier caractère avec left(cells(nolig, nocol).formula,1)
    S'il est = "=" ou = "-", tu sais ce qu'il te reste à faire. mais tu auras un espace en début de cellule alors ajoute trim(...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells(NoLig, NoCol).Formula = _
    Trim(Mid(Cells(NoLig, NoCol).Formula, 2, Len(Cells(NoLig, NoCol).Formula) - 1))

  6. #6
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 34
    Par défaut
    Citation Envoyé par Gorfael Voir le message
    Salut lionhigh et le forum
    Question au hazard : tu parles de convertir un fichier texte.
    est-ce que tu as mis la colonne réceptrice en format Texte ?
    A+
    Fallait juste que je trouve comment faire ;-)
    Array(3, 2) (tableau numéro 3 au format 2 (texte))


    Merci, je vais encore essayer de résoudre le problème avec la solution proposée par ouskel'n'or. Elle me servira surement pour plus tard. Je poste dès que ça marche !!

  7. #7
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 34
    Par défaut
    Et voilà, ça marche également :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    Dim NoLig As Integer
        Dim NoCol As Integer
        NoCol = 3
        For NoLig = 1 To 90
                If Left(Cells(NoLig, NoCol).Formula, 1) = "=" Then
                    Cells(NoLig, NoCol).Formula = Trim(Mid(Cells(NoLig, NoCol).Formula, 2, Len(Cells(NoLig, NoCol).Formula) - 1))
                ElseIf Cells(NoLig, NoCol) <> "" Then
     
                Else
     
                End If
     
     
     
        Next NoLig

    Merci Gorfael et ouskel'n'or

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/09/2014, 12h23
  2. Récupérer une plage afin d'appliquer une formule
    Par gege765 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/11/2013, 17h57
  3. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  4. Ajout d'une feuille afin d'obtenir l'ensemble des résultats d'une macro.
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/01/2009, 15h00
  5. Réponses: 7
    Dernier message: 22/11/2006, 09h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo