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 :

Formules générée par du VBA et non evaluées


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Par défaut Formules générée par du VBA et non evaluées
    Bonjour, voici mon problème et je sèche lamentablement.
    J'ai un bout de code vba qui écrit des formules tout bête du genre =A3*B3 dans des cellules.
    Ce code est assez ancien il fonctionne très bien depuis 3-4 ans.
    Mais j'ai été amené a le faire tourné sur un Excel beaucoup récent. Et la petit problème.
    Les formules sont bien sur générées et écrite de la même façon par contre elle ne sont plus évaluées. et apparait #NOM? en lieu et place du résultat du calcul.
    Et chose encore plus étrange si je sélectionne l'une ces cellules et que je fait entrée sans modifiée en aucune façon la formule... celle si est évaluée et fonctionne correctement
    En fait je n'ai pas besoin de entrée il suffit de sélectionner la cellule et d'en sortir en sélectionnant une autre cellule. Et sur ce lostFocus la formule dans la première cellule est correctement évaluée.

    Est ce que quelqu'un peu m'aiguiller ??
    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Et quel est ton code

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Par défaut
    Le voila


    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    'Parcours des lignes pour chercher les fresques
        Dim debutFresque As Integer
        debutFresque = -1
        Dim finFresque As Integer
        Dim ligneNewFresque As Integer
        ligneNewFresque = 2
        Dim feuille As Worksheet
        Set feuille = Application.Worksheets("Synthèse")
        Dim duree As Integer
        'Parcours des lignes
        For i = 2 To Me.UsedRange.Rows.Count + 1
            'si on tombe sur un debut ou une fin de fresque
            If (StrComp(Me.Cells(i, "B").Text, "", vbTextCompare) = 0) Then
                'on est sur le debut de la premiere
                If (debutFresque < 0) Then
                    debutFresque = i
                'on est sur la fin de la premiere ou sur le debut ou la fin des suivantes
                Else
                    finFresque = i
                    ligneNewFresque = ligneNewFresque + 1
                    'Ajout d'une ligne dans la synthese pour la fresque
                    'ou utilisation de la 3eme ligne pour la premiere fresque
                    If (ligneNewFresque > 3) Then
                        feuille.Rows(ligneNewFresque).Insert
                    End If
     
                    Dim lang
                    Dim somme As String
                    lang = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
                    If (lang = 1067 Or lang = 1033 Or lang = 2057) Then
                        somme = "SUM"
                    ElseIf (lang = 1036) Then
                        somme = "SOMME"
                    End If
     
                    'sommes des projectiles par calibre
                    Dim nom As String
                    nom = Me.Cells(debutFresque, "E").Text
                    If (InStr(1, nom, "#", vbTextCompare)) Then
                        nom = Left(nom, InStr(1, nom, "#", vbTextCompare) - 1)
                    End If
                    feuille.Cells(ligneNewFresque, "A").Value = nom
                    feuille.Cells(ligneNewFresque, "B").Value = "=" & somme & "(Quantitatif!W" & CStr(debutFresque + 1) & ":Quantitatif!W" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "C").Value = "=" & somme & "(Quantitatif!X" & CStr(debutFresque + 1) & ":Quantitatif!X" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "D").Value = "=" & somme & "(Quantitatif!Y" & CStr(debutFresque + 1) & ":Quantitatif!Y" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "E").Value = "=" & somme & "(Quantitatif!Z" & CStr(debutFresque + 1) & ":Quantitatif!Z" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "F").Value = "=" & somme & "(Quantitatif!AA" & CStr(debutFresque + 1) & ":Quantitatif!AA" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "G").Value = "=" & somme & "(Quantitatif!AB" & CStr(debutFresque + 1) & ":Quantitatif!AB" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "H").Value = "=" & somme & "(Quantitatif!AC" & CStr(debutFresque + 1) & ":Quantitatif!AC" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "I").Value = "=" & somme & "(Quantitatif!AD" & CStr(debutFresque + 1) & ":Quantitatif!AD" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "J").Value = "=" & somme & "(Quantitatif!AE" & CStr(debutFresque + 1) & ":Quantitatif!AE" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "K").Value = "=" & somme & "(Quantitatif!AF" & CStr(debutFresque + 1) & ":Quantitatif!AF" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "L").Value = "=" & somme & "(Quantitatif!AG" & CStr(debutFresque + 1) & ":Quantitatif!AG" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "M").Value = "=" & somme & "(Quantitatif!AH" & CStr(debutFresque + 1) & ":Quantitatif!AH" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "N").Value = "=" & somme & "(Quantitatif!AI" & CStr(debutFresque + 1) & ":Quantitatif!AI" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "O").Value = "=" & somme & "(Quantitatif!AJ" & CStr(debutFresque + 1) & ":Quantitatif!AJ" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "P").Value = "=" & somme & "(Quantitatif!AK" & CStr(debutFresque + 1) & ":Quantitatif!AK" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "Q").Value = "=" & somme & "(Quantitatif!AL" & CStr(debutFresque + 1) & ":Quantitatif!AL" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "R").Value = "=" & somme & "(Quantitatif!AM" & CStr(debutFresque + 1) & ":Quantitatif!AN" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "S").Value = "=" & somme & "(Quantitatif!AO" & CStr(debutFresque + 1) & ":Quantitatif!AP" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "T").Value = "=" & somme & "(Quantitatif!AQ" & CStr(debutFresque + 1) & ":Quantitatif!AR" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "U").Value = "=" & somme & "(Quantitatif!AS" & CStr(debutFresque + 1) & ":Quantitatif!AT" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "V").Value = "=" & somme & "(Quantitatif!AU" & CStr(debutFresque + 1) & ":Quantitatif!AV" & CStr(finFresque - 1) & ")"
                    feuille.Cells(ligneNewFresque, "W").Value = "=" & somme & "(Quantitatif!AW" & CStr(debutFresque + 1) & ":Quantitatif!AW" & CStr(finFresque - 1) & ")"
     
                    'somme de la MA
                    feuille.Cells(ligneNewFresque, "Y").Value = "=" & somme & "(Quantitatif!Q" & CStr(debutFresque + 1) & ":Quantitatif!Q" & CStr(finFresque - 1) & ")"
     
                    'minutage de la fresque
                    deb = Me.Cells(debutFresque + 1, "B").Text  ' 02min33s
                    If (Not InStr(deb, "Hors")) Then
                        deb = Left(deb, Len(deb) - 1) 'on enleve s
     
                        If (StrComp(Me.Cells(finFresque + 1, "B").Text, "", vbTextCompare) <> 0) Then
                            fin = Me.Cells(finFresque + 1, "B").Text 'on recupere le time du debut de la fresque suivante
                        Else
                            fin = Me.Cells(finFresque - 1, "B").Text 'on recupere le time du debut de la fresque suivante
                            duree = duree + 5
                        End If
                        fin = Left(fin, Len(fin) - 1)
                        duree = duree + (Val(Left(fin, 2)) * 60 + Val(Right(fin, 2))) - (Val(Left(deb, 2)) * 60 + Val(Right(deb, 2))) + 1
                    End If
     
                    If (duree > 0) Then
                        feuille.Cells(ligneNewFresque, "X").Value = duree
                        duree = -1
                    End If
     
                    debutFresque = finFresque
                End If
            End If
        Next i

Discussions similaires

  1. [XL-2010] Insérer formule Excel par le VBA
    Par awa123 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/08/2014, 07h20
  2. [XL-2003] Insertion de formule Excel par VBA mais par " "
    Par Sibuxian dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/05/2010, 12h47
  3. "#VALEUR" s'affiche lorsque formule écrite par VBA
    Par pascalouh dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/06/2009, 10h17
  4. [VBA] Type non défini par l'utilisateur.
    Par ip203 dans le forum Access
    Réponses: 5
    Dernier message: 07/04/2008, 14h38
  5. non prise en compte d'une formule remplie par une macro
    Par mardona dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/06/2007, 15h08

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