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 :

Formule dans cellules


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Gestionnaire de stocks (Pharmacie)
    Inscrit en
    Septembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Gestionnaire de stocks (Pharmacie)
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2018
    Messages : 14
    Points : 17
    Points
    17
    Par défaut Formule dans cellules
    Bonsoir chers tous
    J'ai eu ce bout de code pour placer (=) devant les valeurs mais ça ne fonctionne pas.
    Quelqu'un pourrait-il apporter une correction Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim cel As Range
    For Each cel In Range("E7:E37,M7:M37,J7:J37")
        cel.Formula = "=" & cel
    Next cel

  2. #2
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  3. #3
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Points : 224
    Points
    224
    Par défaut
    bonjour à tous,

    ce code fonctionne chez moi .

    Qu'est ce qui ne fonctionne pas chez vous ? un message d'erreur ? le résultat n'est pas celui attendu ?

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Algoplus Voir le message
    Qu'est ce qui ne fonctionne pas chez vous ?
    Je miserais bien une pièce sur le contenu des cellules avant macro.
    Comme le demandeur ne dit rien sur ce sujet, impossible d'apporter une réponse constructive à sa question.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Gestionnaire de stocks (Pharmacie)
    Inscrit en
    Septembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Gestionnaire de stocks (Pharmacie)
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2018
    Messages : 14
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Je miserais bien une pièce sur le contenu des cellules avant macro.
    Comme le demandeur ne dit rien sur ce sujet, impossible d'apporter une réponse constructive à sa question.
    La macro agit seulement sur E7:E37 mais pas sur les autres plages. je trouve cela bizarre

  6. #6
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Points : 224
    Points
    224
    Par défaut
    essayer de modifier votre code pour voir si la boucle prend toutes les plages:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim cel As Range
    For Each cel In Range("E7:E37,M7:M37,J7:J37")
         msg = msg & cel.Address & "-"
        cel.Formula = "=" & cel
    Next cel
     
    MsgBox msg
    Si l'adresse de toutes les cellules des plages ne figurent pas dans la msgbox c'est qu'effectivement il y a un soucis avec for each... ;
    sinon ....
    qu'est ce qu'il y a dans les cellules des deuxième et troisième plages avant la macro ?

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour le Fil,

    Transformer la valeur d'une cellule en formule n'est pas aussi simple.
    Essayer :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Option Explicit
    Sub Test()
      Call TransformeValeurEnFormule(Range("E7:E37,M7:M37,J7:J37"))
    End Sub
    Private Sub TransformeValeurEnFormule(rng As Range)
    Dim cel As Range
    Dim B As Boolean
    Dim D As Double
      For Each cel In rng.Cells
        Select Case TypeName(cel.Value)
          Case "Empty"
            cel.Offset(0, 1).FormulaLocal = ""
          Case "Boolean"
            B = cel.Value
            cel.Offset(0, 1).FormulaLocal = "=" & IIf(B, "VRAI", "FAUX")
          Case "Date", "Currency", "Double"
            D = cel.Value
            cel.Offset(0, 1).FormulaLocal = "=" & D
          Case "String"
            If cel.NumberFormat <> "@" Then
              cel.Offset(0, 1).FormulaLocal = "=""" & Replace(cel.Value, """", """""") & """"
            Else
              cel.Offset(0, 1).FormulaLocal = cel.FormulaLocal  'Pour pas changer le résultat
            End If
          Case "Error"
            Select Case cel.Value
              Case CVErr(xlErrNull)   '2000
                cel.Offset(0, 1).FormulaLocal = "=#NUL!"
              Case CVErr(xlErrDiv0)   '2007
                cel.Offset(0, 1).FormulaLocal = "=#DIV/0!"
              Case CVErr(xlErrValue)  '2015
                cel.Offset(0, 1).FormulaLocal = "=#VALEUR!"
              Case CVErr(xlErrRef)    '2023
                cel.Offset(0, 1).FormulaLocal = "=#REF!"
              Case CVErr(xlErrName)   '2029
                cel.Offset(0, 1).FormulaLocal = "=#NOM?"
              Case CVErr(xlErrNum)    '2036
                cel.Offset(0, 1).FormulaLocal = "=#NOMBRE!"
              Case CVErr(xlErrNA)     '2042
                cel.Offset(0, 1).FormulaLocal = "=NA()"
            End Select
          Case Else
            cel.Offset(0, 1).FormulaLocal = ""
        End Select
      Next cel
    End Sub
    EDIT : Désolé mais j'ai oublié de supprimer les .Offset(0, 1)
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Option Explicit
    Sub Test()
      Call TransformeValeurEnFormule(Range("E7:E37,M7:M37,J7:J37"))
    End Sub
    Private Sub TransformeValeurEnFormule(rng As Range)
    Dim cel As Range
    Dim B As Boolean
    Dim D As Double
      For Each cel In rng.Cells
        Select Case TypeName(cel.Value)
          Case "Empty"
            cel.FormulaLocal = ""
          Case "Boolean"
            B = cel.Value
            cel.FormulaLocal = "=" & IIf(B, "VRAI", "FAUX")
          Case "Date", "Currency", "Double"
            D = cel.Value
            cel.FormulaLocal = "=" & D
          Case "String"
            If cel.NumberFormat <> "@" Then
              cel.FormulaLocal = "=""" & Replace(cel.Value, """", """""") & """"
            Else
              cel.FormulaLocal = cel.FormulaLocal  'Pour pas changer le résultat
            End If
          Case "Error"
            Select Case cel.Value
              Case CVErr(xlErrNull)   '2000
                cel.FormulaLocal = "=#NUL!"
              Case CVErr(xlErrDiv0)   '2007
                cel.FormulaLocal = "=#DIV/0!"
              Case CVErr(xlErrValue)  '2015
                cel.FormulaLocal = "=#VALEUR!"
              Case CVErr(xlErrRef)    '2023
                cel.FormulaLocal = "=#REF!"
              Case CVErr(xlErrName)   '2029
                cel.FormulaLocal = "=#NOM?"
              Case CVErr(xlErrNum)    '2036
                cel.FormulaLocal = "=#NOMBRE!"
              Case CVErr(xlErrNA)     '2042
                cel.FormulaLocal = "=NA()"
            End Select
          Case Else
            cel.FormulaLocal = ""
        End Select
      Next cel
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  8. #8
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par KTMARC Voir le message
    La macro agit seulement sur E7:E37 mais pas sur les autres plages. je trouve cela bizarre
    Moi ce que je trouve bizarre, c'est que tu continues à ne pas vouloir montrer ce que contiennent les cellules qui ne fonctionnent pas.
    Si c'est une donnée qui ne peut pas être transformée en formule, on est tous en train de perdre notre temps pour rien.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  9. #9
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour le Fil,

    Citation Envoyé par Menhir Voir le message
    ...Si c'est une donnée qui ne peut pas être transformée en formule ...
    Avec le code que j'ai proposé, toutes les données peuvent être transformées en formule (y compris les valeurs d'erreur).
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  10. #10
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Avec le code que j'ai proposé, toutes les données peuvent être transformées en formule (y compris les valeurs d'erreur).
    Je ne suis pas sûr que ton code pourrais transformer SOME(A1:A10) (la faute est volontaire) en formule.
    Ce que je veux dire, c'est que si le contenu des cellules est une formule fausse, aucun code ne la corrigera.

    Et je pense qu'il y a de fortes probabilités (sans que ce soit une certitude) que ce soit le cas ici.
    Cette impression est renforcée depuis qu'il a dit que ça fonctionne pour certaines cellules.

    Donc, tant que le demandeur n'aura pas montré à quoi ressemble de contenu de ses cellules, on naviguera dans le brouillard et on perdra notre temps à tourner en rond.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Re,
    Citation Envoyé par Menhir Voir le message
    Je ne suis pas sûr que ton code pourrais transformer SOME(A1:A10) (la faute est volontaire) en formule.
    Ce que je veux dire, c'est que si le contenu des cellules est une formule fausse, aucun code ne la corrigera.
    Mon code n'est pas fait pour corriger les erreurs, il répond simplement à la question initiale :
    Citation Envoyé par KTMARC Voir le message
    J'ai eu ce bout de code pour placer (=) devant les valeurs mais ça ne fonctionne pas.
    Quelqu'un pourrait-il apporter une correction Merci
    Après avoir exécuté le code aucune valeur n'est changée.
    Dans le cas que tu donnes,=SOME(A1:A10), la valeur de la cellule est #NOM?, le code ajoute un = devant (i.e transforme la valeur en formule) : =#NOM?
    Si c'est SOME(A1:A10), c'est un texte, le code ajoute un = devant et les guillemets (i.e transforme la valeur en formule) : ="SOME(A1:A10)"

    Le seul cas ambigu est une valeur textuelle contenue dans une cellule au format texte, j'ai choisi de conserver la valeur (donc pas de = devant) mais il est simple d'ajouter le = si c'est ce qu'on souhaite.
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  12. #12
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Le problème, c'est que le demandeur est peu explicite sur ce qu'il souhaite.
    A la base, le code qu'il poste dans sa demande est fonctionnel.
    Mais son "ça ne fonctionne pas" n'est pas très expressif sur ce qu'il faut corriger.

    De toutes façon, il semble être aux abonnés absents...
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  13. #13
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,
    Citation Envoyé par Menhir Voir le message
    Le problème, c'est que le demandeur est peu explicite sur ce qu'il souhaite.
    A la base, le code qu'il poste dans sa demande est fonctionnel.
    Pas vraiment, il ne fonctionne pas pour :
    - du texte,
    - un nombre décimal (en vf)
    - un booléen
    - un date ou une heure
    - une formule qui retourne une erreur
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

Discussions similaires

  1. [BO XI][DESKI] PROBLEME FORMULE DANS CELLULE
    Par jbouat dans le forum Deski
    Réponses: 4
    Dernier message: 24/04/2008, 23h34
  2. calculs de formules dans cellules
    Par bobby5169 dans le forum Excel
    Réponses: 14
    Dernier message: 24/09/2007, 08h25
  3. [VBA-E]Formule dans cellule en VBA
    Par dev81 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/06/2007, 14h03
  4. [VBA-E] insertion de formule dans cellule
    Par jeff37 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/05/2006, 13h53
  5. [D7-EXCEL2000] Formule dans cellule Excel qui ne se calcule pas
    Par Albertolino dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 09/09/2003, 14h18

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