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 :

impossible de mettre une formule dans une cellule en vba [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 171
    Par défaut impossible de mettre une formule dans une cellule en vba
    Bonjour,

    J'espère être dans le bon forum.
    Je souhaite mettre une formule dans une cellule Excel en utilisant du code Vba.
    Voici l'extrait de mon code :

    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
    ... 
    ... 
    With Worksheets(Tab_Annee(i)) ' Tab_Annee(i) contient par exemple 04-2019 (mois et année) 
    .Activate 
    End With 
    ... 
    Saut_Ligne=3 
    ... 
    ... 
    For i = 0 to max 
    ... 
    ... 
    Select Case i 
    Case Is = 0 ' premier mois 
    Case Is = Max_Feuilles - 1 ' dernier mois 
    Case Else ' les autres mois 
    For l = Prem_Ligne To Ligne_Max 
    chaine1 = "='" & CStr(Tab_Annee(i - 1)) & "'!" & CStr(ConvertToLetter(DDay_MoisPreced)) & l 
    Worksheets(Tab_Annee(i)).Cells(AlphaColToNum(DDay_MoisEnCours), l).Formula = chaine1 
    l = l + (Saut_Ligne - 1) 
    Next l 
     
    End Select 
    ... 
    ... 
    Next i
    Lorsque je mets un espion sur Worksheets(Tab_Annee(i)).Cells(AlphaColToNum(DDay_MoisEnCours), l).Formula, cela est bien égale à chaine1 (enfin le contenu) mais la formule ne s'inscrit jamais dans la cellule. J'y ai passé l'après-midi...Pour information chaine1 prends une valeur comme suit : "='04-2019'!G7"

    MERCI de votre aide.

    Je vous donne les fonctions utilisées pour info :

    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
    Function AlphaColToNum(Col) As Long 
    AlphaColToNum = Range(Col & 1).Column 
    End Function 
     
    Function ConvertToLetter(iCol As Variant) As String 
    Dim iAlpha As Integer 
    Dim iRemainder As Integer 
    iAlpha = Int(iCol / 27) 
    iRemainder = iCol - (iAlpha * 26) 
    If iAlpha > 0 Then 
    ConvertToLetter = Chr(iAlpha + 64) 
    End If 
    If iRemainder > 0 Then 
    ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64) 
    End If 
    End Function

  2. #2
    Expert éminent 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
    Par défaut
    Vu que ta fonction ConvertToLetter ne fonctionne que jusqu'à la colonne Z, il serait bon de te simplifier la vie en remplaçant CStr(ConvertToLetter(DDay_MoisPreced)) & l par Cells(l, DDay_MoisPreced).Address(False, False).

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 171
    Par défaut Merci Menhir
    Merci pour l'info. Je la corrigerai. Cependant ce n'est pas cela qui ne fonctionne pas. C'est que la formule n'est jamais copiée dans la cellule.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 171
    Par défaut Précision
    Si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox (Worksheets(Tab_Annee(i)).Cells(AlphaColToNum(DDay_MoisEnCours), l).Formula)
    Le contenu de chaine1 apparaît bien...

  5. #5
    Expert éminent 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
    Par défaut
    Citation Envoyé par jpclutier Voir le message
    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox (Worksheets(Tab_Annee(i)).Cells(AlphaColToNum(DDay_MoisEnCours), l).Formula)
    Le contenu de chaine1 apparaît bien...
    A ta place, je vérifierais plutôt ce que renvoie AlphaColToNum(DDay_MoisEnCours).
    Je ne sais pas exactement ce que contient DDay_MoisEnCours mais je ne vois pas l'utilité de ta fonction AlphaColToNum.

    Mais à mon avis, ton erreur vient du fait que tu intervertis colonne et ligne dans Cells.
    A lire : https://docs.microsoft.com/fr-fr/off....range(object)

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 171
    Par défaut
    Oui Menhir j'ai intervertis...quel âne !
    Merci beaucoup.

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

Discussions similaires

  1. Formule très longue à mettre dans une cellule via VBA
    Par levisagepale dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/09/2017, 10h05
  2. Inserer une formule (Longue) dans une cellule via VBA
    Par alex830001 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/01/2009, 12h28
  3. Inscrire une formule dans une cellule par VBA
    Par marc56 dans le forum Excel
    Réponses: 6
    Dernier message: 23/11/2008, 23h57
  4. mettre des n° dans des cellules avec VBA
    Par naitgo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/11/2007, 20h48
  5. Réponses: 1
    Dernier message: 11/06/2007, 21h31

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