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 :

Tentative d'addition en VBA avec activecell


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2017
    Messages : 8
    Par défaut Tentative d'addition en VBA avec activecell
    Bonjour j'ai créé un programme permettant de générer un tableau avec un nombre de colonnes variables.
    Tout se passe bien mis à part que je dois dans une cellule du tableau générer intégrer une addtion de plusieurs cellules qui sont sur la même ligne et de colonnes côte à côte.

    Le nombre de colonnes est déterminé par l'utilisateur grâce à un formulaire. Ainsi le nombre de celles à additionner est égal au nombre de colonnes (donc variable et indéfini à l'avance)

    Voici mon code actuel pour générer cette addition (qui ne marche pas bien sûr) , cela dépasse mes compétences pouvez- vous m'aider svp ?
    ici le nombre de colonnes est égal à "ActiveCell(1, 2).Value"
    la cellules o'u implanter l'addition est : " ActiveCell(4, 8) "
    la la première cellule de la plage à selectionner pour l'addition est connue : "ActiveCell(8, 8)"

    Nom : Capture.PNG
Affichages : 1562
Taille : 3,2 Ko

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Pour utiliser une fonction d'Excel dans une cellule à partir de VBA, tu dois utiliser Formula ou Formulalocal.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2017
    Messages : 8
    Par défaut
    Merci du conseil clément pourrais-tu me donner un exemple de ta solution avec le code que j'ai fourni stp ?

    Mais je pense qu'ici le problème est que je ne sais pas comment utiliser une fonction somme ou alors mettre en forme une addition avec ActiveCell et un ombre de colonnes variables pour pouvoir générer le calcul que je souhaite faire.

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Il y a plusieurs problèmes dans ton code.
    1. ActiveCell n'est pas Cells !
    ActiveCell désigne la cellule active.
    La syntaxe suivante :
    désigne la cellule de la ligne i et de la colonne j.
    Lorsque tu écris ActiveCell(8,8), en fait tu veux dire Cells(8,8)?
    Tu peux aussi utiliser Range pour désigner une plage de cellules. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("H8:H10")     'désigne la plage H8:H10
    Range("H8:H" & Range("B2").Value)      'désigne les cellules en colonne H de la ligne 8 à la ligne n° le nbe écrit en B2.
    2. Pour utiliser une fonction de feuille de calcul, 2 cas de figures. Tu veux écrire 1 fois le résultat et il ne doit pas forcément s'adapter à des changements. Tu peux utiliser Application.laFonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(4,8).Value = Application.Sum(Range("H8:H" & Range("B2").Value))
    Si tu veux écrire la formule comme si tu l'écrivais dans Excel (donc elle s'adaptera à d'éventuels changements), tu dois utiliser Formula en écrivant les fonction en ANGLAIS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(4,8).Formula = "=SUM(H8:H" & Range("B2").Value & ")"

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2017
    Messages : 8
    Par défaut
    Bonjour riaolle,

    Merci de ta réponse je vais la tester dès maintenant et je reviens vers toi.
    Quand je dis ActiveCell(8,8) je désigne donc la cellule sur la 8ème ligne et dans la 8ème colonne avec la cellule ActiveCell(1,1) (qui est la cellule active) comme référence.

    Par exemple si ActiveCell = A1 alors ActiveCell(8,8) = H8
    ou si ActiveCell = F15 alors ActiveCell(8,8) = M22

    et 0 moins de me tromper Cell(8,8) = H8 tout le temps et peu importe quelle est la cellule active, non ?

    Et comme j'utilise la référence ActiveCell dans tout mon programme, je n'utilise jamais le format "A1" pour désigner une cellule.

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Ok, néanmoins la syntaxe ActiveCell(i,j) n'est tout de même pas correcte
    Dans ton cas de figure, il faut utiliser Offset :
    Indique qu'on se déplace de 8 colonnes et 8 lignes à partir de la la cellule active. Attention : on se déplace de 8 colonnes et 8 lignes, donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Offset(8,8) <=> Range("I9")
    Est-ce que tu vois comment adapter à ton code ?
    Essaie, puis montre-nous ce que tu as fait.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/04/2016, 14h09
  2. boucle en VBA avec activecell.formula et fonction hyperlink
    Par polo92 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/10/2014, 12h59
  3. Problème avec activecell en vba
    Par vero911 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 18/12/2008, 09h45
  4. [VBA-E]selectionner une ligne repérée avec activecell
    Par titou007 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/03/2006, 15h24
  5. Ajouter un enregitrement a une table vide en VBA avec access
    Par Mateache dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/01/2006, 15h36

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