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 :

Introduire une formule par code VBA


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    réceptionnaire
    Inscrit en
    Avril 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : réceptionnaire
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2021
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Introduire une formule par code VBA
    Bonjour à tous, je suis nouvellement inscrit pour soumettre un problème concernant l'utilisation d'Excel et du VBA, pour insérer dans une cellule précise une fonction grâce à une macro. Je suis plutôt débutant en matière de VBA. Pour automatiser certaines tâches dans un classeur xlsm, macros que j'ai créé. Je cherche à récupérer le texte d'une cellule E6 dans laquelle ce texte est obtenu par formule Concatener. J'ai donc pour ce faire essayer une nouvelle macro. Tout fonctionne, sauf le fait qu' ayant utilisé l'enregistreur de macros Excel, la formule écrite dans cette nouvelle macro reste figée, au niveau de la plage de recherche. (explication dans le fichier xlsx joint). Mon classeur me sert à inventorier des produits, et à chaque nouvel inventaire, j'ai besoin de récupérer les valeurs du mois précédent par rechercheV. Le problème, s'est qu'une colonne est créée tous les mois et cela fait donc changer la plage de recherche. La colonne E (fin de plage) devient F le mois suivant. Je pense qu'il doit être possible au lancement de la macro d'avoir une variable à saisir, qui permettrait de modifier la plage de recherche, et donc le numéro de colonne à retourner.
    Voici le texte brut de cette macro "changement de mois"

    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
      Sub ChangM()
    ' ChangM Macro
    ' changer la plage de recherche
     
    '
        Range("E6").Select
        Selection.Copy
        Range("J8").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7],Precinvent!R2C1:R47C17,17,FALSE)"
        Range("J8").Select
        Selection.AutoFill Destination:=Range("J8:J67")
        Range("J8:J67").Select
        ActiveWindow.SmallScroll Down:=15
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Perso, je transformerais la plage des anciens inventaires en tableau structuré (C'est toujours mieux de travailler avec des tableaux structurés).

    Nom : 2021-04-07_202329.png
Affichages : 137
Taille : 12,0 Ko



    Du coup, tu pourrais utiliser la fonction COLONNES(...) pour récupérer l'index de la dernière colonne.

    Nom : 2021-04-07_202346.png
Affichages : 121
Taille : 7,9 Ko




    sur le fond, je n'organiserais pas mes données ainsi, car la ligne d'intitulés de ton tableau contient en fait des données "métier" qui devraient être placée dans une colonne dudit tableau. Mais c'est un autre débat pour l'instant.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Candidat au Club
    Homme Profil pro
    réceptionnaire
    Inscrit en
    Avril 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : réceptionnaire
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2021
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Comment faire l'ajout d'une nouvelle colonne à droite du tableau structure ?

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Une manière rapide de pratiquer en fonction des options d'Excel est de remplir la cellule la droite de la dernière cellule d'entête, comme tu le ferais en Excel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("tableau1[#Headers]")(range("tableau1[#Headers]").count)(1,2).value="Date Naissance"

    Manière "correcte" de pratiquer, qui correspond plus au clic droit dans le tableau et qui te permet de placer la colonne où tu veux dans le tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test()
      Dim lc As ListColumn
     
      Set lc = Range("tableau1").ListObject.ListColumns.Add()
      lc.Name = "Date Naissance"
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. Remplir une table par Code VBA
    Par Om Lebnet dans le forum VBA Access
    Réponses: 1
    Dernier message: 07/11/2018, 13h43
  2. [XL-2010] Traduire une formule en code VBA
    Par thomasdu40 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/07/2012, 09h39
  3. [XL-2007] Ajouter une formule par code
    Par Nanais19 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/11/2011, 09h29
  4. Ajout d'une formule par code vba
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/05/2011, 09h50
  5. Acces aux fonctions d'une DLL par code VBA
    Par GlamIS dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/09/2010, 15h59

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