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 :

Insertion formule automatisé


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2018
    Messages : 2
    Par défaut Insertion formule automatisé
    Bonjour,

    Je suis à la recherche d'une solution pour pouvoir insérer ma formule sans avoir de défaut.
    Ma formule permet suivant la valeur d'une case d'aller rechercher verticalement le nombre sur une autre feuille et de renvoyer la deuxième case.
    Si la case est vide rien n'est affiché.
    J'ai essayer plusieurs manipulation déjà en ajoutant le chr(34), en vérifiant ma formule avec un msgbox, ...
    Je me retrouve toujours avec un blocage.

    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
     
    Sub essai()
     
    li = 1
    a = 0
    rien = ""
     
    For a = 2 To 50674
     
    'f = "=SI(OU(A"
    '& li &
    'o = "=" & Chr(34) & Chr(34) & ";RECHERCHEV(A"
    '& li &
    'r = ";Produits!$A$6:$AB$4087;2;FAUX)=FAUX);" & Chr(34) & Chr(34) & ";RECHERCHEV(A"
    '& li &
    'm = ";Produits!$A$6:$AB$4087;2;FAUX))"
    'form = f & li & o & li & r & li & m
     
    'MsgBox "=SI(OU(A" & li & "=" & Chr(34) & Chr(34) & ";RECHERCHEV(A" & li & ";Produits!$A$6:$AB$4087;2;FAUX)=FAUX);" & Chr(34) & Chr(34) & ";RECHERCHEV(A" & li & ";Produits!$A$6:$AB$4087;2;FAUX))"
     
        Sheets("Produits").Cells(a, "A").Value = "=SI(OU(A" & li & "=" & Chr(34) & Chr(34) & ";RECHERCHEV(A" & li & ";Produits!$A$6:$AB$4087;2;FAUX)=FAUX);" & Chr(34) & Chr(34) & ";RECHERCHEV(A" & li & ";Produits!$A$6:$AB$4087;2;FAUX))"
        Sheets("Produits").Cells(a, "H").Value = "=SI(OU(H" & li & "=" & Chr(34) & Chr(34) & ";RECHERCHEV(H" & li & ";Produits!$A$6:$AB$4087;2;FAUX)=FAUX);" & Chr(34) & Chr(34) & ";RECHERCHEV(H" & li & ";Produits!$A$6:$AB$4087;2;FAUX))"
        a = a + 17
        li = li + 17
     
        Sheets("Produits").Cells(a, "A").Value = "=SI(OU(A" & li & "=" & Chr(34) & Chr(34) & ";RECHERCHEV(A" & li & ";Produits!$A$6:$AB$4087;2;FAUX)=FAUX);" & Chr(34) & Chr(34) & ";RECHERCHEV(A" & li & ";Produits!$A$6:$AB$4087;2;FAUX))"
        Sheets("Produits").Cells(a, "H").Value = "=SI(OU(A" & li & "=" & Chr(34) & Chr(34) & ";RECHERCHEV(H" & li & ";Produits!$A$6:$AB$4087;2;FAUX)=FAUX);" & Chr(34) & Chr(34) & ";RECHERCHEV(H" & li & ";Produits!$A$6:$AB$4087;2;FAUX))"
        a = a + 15
        li = li + 16
     
    Next a
     
    End Sub
    Merci d'avance pour votre aide.

    Modif msg: intégration du code complet.

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour et bienvenu sur ce Forum,

    Pourquoi une formulation?
    A mon sens une méthode Find suivie, si celle-ci ne renvoie pas rien (je te laisse traduire), d'une propriété Offset suffiraient.

    Ces 2 notions sont décrites dans cet espace documentaire.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2018
    Messages : 2
    Par défaut
    Merci pour ta réponse tu viens de me perdre, je ne connaissais pas (pratique rarement).

    En regardant je comprend que je ne peut utiliser cette fonction.
    Puisque j'ai une grande partie de mon tableau qui est composé de cette formule mais avec différentes case à renvoyer.
    Et j'ai déjà la dite formule de placer dans mes cellules je veut la remplacer.


    Ou je n'ai pas compris ou tu voulais en venir.

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Dans ce cas, tu peux
    - soit modifier directement les formules en cours si elles existent (exemple par remplacement)
    - soit utiliser les fonctions natives d'Excel directement dans ta feuille de travail
    - soit procéder à une formulation par VBA

    (Code à adapter)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
     
    Public Sub laformulation()
     
    Const laformule As String = "=LIGNE()*A1"
     
    With ThisWorkbook.Worksheets("Feuil1")
        .Range("B1:B" & .Cells(.Rows.Count, 1).End(xlUp).Row).FormulaLocal = laformule
    End With
     
    End Sub
    Remarques pour ce code:
    - La méthode permet d'utiliser le langage de l'utilisateur. Ainsi, un simple copier/coller dans la déclaration de la formule suffit.
    - Les formules vont s'incrémenter d'elles mêmes (A1 deviendra A2, A3, A4....)

  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
    Pour introduire une formule dans une cellule, il ne faut pas utiliser la propriété Value mais Formula.
    Et si on veut introduire cette formule en français comme tu le fais, il faut utiliser FormulaLocal.
    https://msdn.microsoft.com/fr-fr/lib...1(v=office.15)

    De plus, faire une assignation de valeur sur la variable compteur d'une boucle For To est rarement une bonne idée.
    Soit tu veux maitriser l'incrémentation particulière de ta variable et tu fais une boucle While ou Do, soit tu laisses For To faire son travail sans la perturber.

Discussions similaires

  1. Insertion Formule dans une Boucle VBA (bloomberg)
    Par Stufa789 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 08/04/2011, 00h45
  2. Erreur dans insertion formule par VBA
    Par Nanit6 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/01/2011, 17h33
  3. [AC-2003] Insertion formule dans un fichier excel
    Par tarnx dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/08/2010, 15h09
  4. probleme insertion formule dans cellule via vba
    Par moxo01 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/06/2008, 11h06
  5. Insertion formule par vba
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/08/2007, 09h34

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