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 :

Fonction type SOMMEPROD dans tableau en VBA [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 9
    Par défaut Fonction type SOMMEPROD dans tableau en VBA
    Kms.xlsm

    Bonsoir.

    Après plusieurs heures à essayer de monter un tableau somme toute pas forcément si simple pour un bleu en VBA comme moi, j'arrive au moment où ça sèche sérieusement. J'ai glané des infos à gauche et à droite, mais là ça dépasse mes compétences pour le moment.

    En PJ le fichier en question.

    Pour résumer :

    J'essaye de monter un tableau kilométrique à entrées verticales et horizontales pour référencer la distance entre deux points (un peu comme ceux qu'on voit sur les aires d'autoroutes) et qui me servira de base pour un autre tableau.

    L'idée est de rentrer les données dans une feuille standard (Du style de A à B, 3 km e.g.) et de les réintégrer dans une autre dans laquelle on trouve ce tableau à double lecture.

    J'ai réussi à intégrer les noms comme je voulais (le code est loin d'être optimal je pense, mais l'amélioration sera dans un second temps si vraiment je le sens).

    Me reste plus qu'à pouvoir réintégrer les kilomètres.

    Tout est dans le fichier, ça parlera plus. Les différentes macro ne sont pas encore simplifiées.

    L'idée là, c'est surtout de réussir à faire un sommeprod ou un EQUIV ou autre dans un tableau à géométrie variable. Si je rajoute une nouvelle distance entre deux nouveaux lieux, le tableau gagne 2 lignes et 2 colonnes et il faut tout recalculer.

    Merci de vos lumières.

    Bonne soirée

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Essayez ceci:

    en conservant la structure de votre fichier:
    Pièce jointe 595241

    où en en convertissant les 2 tableaux en tableaux structurés, la formule s'ajustera en fonction de la taille des tableaux, la macro est conservée mais uniquement pour adapter la MFC des cases noires.
    Pièce jointe 595243


    Cdlt

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 9
    Par défaut
    Bonjour.

    Merci de votre retour et d'avoir pris le temps.

    En rajoutant deux villes et le kilométrage, après passage de toutes les macros, le remplissage ne se fait pas sur les nouvelles villes.

    Mais j'ai votre code donc je vais pouvoir me pencher dessus (il va me falloir un peu de temps), le comprendre et adapter en fonction de.

    Je reviendrai vers vous.

    Merci beaucoup.

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 9
    Par défaut
    Bonjour.

    J'ai repris votre document et l'ai modifié pour arriver finalement au résultat souhaité.

    Ça fonctionne bien et c'est le principal.

    Néanmoins, afin de mourir moins bête, j'ai quelques questions.

    1 - Lorsque je veux faire référence à la cellule d'une feuille, je dois écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Worksheets("XXXX").Cells(i, j), Worksheets("XXXX").Cells(x,y))
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("XXXX").Range(Cells(i, j),Cells(x,y))
    ?


    --------------------

    2 -

    Concernant sommeprod qui fonctionne : j'ai bien compris qu'il s'agissait d'une propriété propre à FormulaR1C1 pour le référencement.

    En revanche je ne comprends pas la syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=SUMPRODUCT(('XXXX'!R2C1:R" & DerLig & "C1=RC1)*(XXXX.'!R2C2:R" & DerLig & "C2=R1C)*('XXXX'!R2C3:R" & DerLig & "C3))"
    XXXX le nom de la feuille. D'ailleurs pourquoi ici on peut mettre le nom de la feuille sans passer par worksheets ou sheets?
    DerLig pour la dernière ligne de la colonne

    Je pourrais écrire ce que je pense avoir compris (ce que j'avais commencé), mais en fait ça ne mène à rien. Pourriez-vous me commenter la rédaction de cette commande s'il vous plait? Je vois bien le résultat que ça donne dans le tableau final, mais la logique de rédaction m'échappe.

    -----------------------

    3 - Sur la MFC finale vous mettez

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Formula1:="=COLONNE()=LIGNE()")
    Je ne comprends pas que des mots français soient traités par le logiciel. Si vous pouvez éclairer ma lanterne.

    Je vous remercie.

  5. #5
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonsoir,

    Ne confondez pas tout, le VBA est en anglais et les formules excel sont en français.
    Quand on écrit une formule via le VBA avec "FormulaR1C1", les noms des fonctions sont automatiquement traduit en anglais, pour conserver la correspondance avec le fonctions en français il faut utiliser "FormulaLOCAL"
    exemple avec une utilisation de EQUIV, toutes les deux en VBA mais différentes suivant le terme employé:
    ActiveCell.FormulaR1C1 = "=MATCH(R1C1,R1C1:R17C19,0)"
    ActiveCell.FormulaLOCAL = "=EQUIV($A$1;$A$1:$S$17;0)"
    D'ailleurs pourquoi ici on peut mettre le nom de la feuille sans passer par worksheets ou sheets?
    , dans une formule (excel), on ne met que le nom de la feuille, on précise pas "sheets" ou "worksheet", ceci étant réservé au VBA.

    Pour les MFC en VBA, les formules retenues sont en français!

    En espérant vous avoir éclairé un peu.

    Cdlt

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 9
    Par défaut
    Bonsoir.

    Merci.

    Effectivement le mélange VBA EXCEl ne m'était pas du tout passé par la tête... En ce sens, c'est nettement plus clair.

    Dans le cas de la formule sommeprod en revanche

    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =SUMPRODUCT(('X'!R2C1:R" & DerLig & "C1=RC1)*('X.'!R2C2:R" & DerLig & "C2=R1C)*('X'!R2C3:R" & DerLig & "C3))"

    Pourriez-vous m'expliquer les :

    - R2C1:R R2C1 c'est A2, mais avec R derrière je ne comprends pas
    - C2=R1C?

    Merci

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

Discussions similaires

  1. [XL-2003] Fonction scrolling mouse dans l'éditeur VBA
    Par Guy_L dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/12/2013, 20h09
  2. [XL-2010] Fonction index & Match dans un code VBA
    Par rinada dans le forum Excel
    Réponses: 3
    Dernier message: 05/03/2013, 12h14
  3. [Designer XiR2] Fonction de calcul dans tableau croisé
    Par colonel.klink dans le forum Débuter
    Réponses: 5
    Dernier message: 17/10/2012, 15h39
  4. [WD-2003] Sélecttion multiple dans tableau en VBA Word
    Par CSR94 dans le forum VBA Word
    Réponses: 1
    Dernier message: 22/09/2010, 12h17
  5. Fonction 'type moyenne' dans requêtes
    Par Devipir dans le forum Access
    Réponses: 8
    Dernier message: 19/06/2006, 21h21

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