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 :

Valoriser une table VBA EXCEL à partir des cellules [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2018
    Messages : 61
    Points : 38
    Points
    38
    Par défaut Valoriser une table VBA EXCEL à partir des cellules
    Bonjour à tous,

    J'ai dans un onglet des données sous la forme suivante :

    Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche
    Semaine Début Fin Début Fin Début Fin Début Fin Début Fin Début Fin Début Fin Nb semaine
    Type A 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 1
    Type B 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 4
    Type C 09:00 12:00 09:00 12:00 09:00 12:00 09:00 12:00 09:00 12:00 09:00 12:00 09:00 12:00 5
    Type D 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 6
    Type E 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 7
    Type F 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 8
    Type G 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 10:00 11:00 8

    Je dois faire des calculs pour chaque type de semaine, chacune ayant pour chaque jour une heure de début et une heure de fin + Pour chaque semaine, le nombre de fois où elle intervient.
    Pour que les calculs se fassent rapidement, je souhaite valoriser une table vba avec les données des cellules, la table étant MaTable ( N, 7, 8,2) , N pour un nombre de d'entités pour lesquelles le calcul va être effectué, 7 pour le nombre de semaines, 8 pour le nombre de jour + le nombre d'occurence de la semaine, 2 pour début et fin !

    La solution la plus simple est de faire des boucles for/net imbriquées et de remplir mais je connais mal le fonctionnement des tables et je me dis qu'il y aurait peut-etre moyen de remplir certaines valeurs par ligne ou par colonne pour gagner du temps ?

    Merci d'avance pour votre aide si vous avez une idée ;o)

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Bonjour
    personnellement je n'ai pas compris la demande et je crois qu'un petit fichier excel sans macro avec qq lignes de données fictives et non confid peuvent expliquer la demande
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  3. #3
    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.

    Tu peux remplir un tableau sur base d'une plage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Tableau()
      Dim T
     
      T = Range("a1:c10").Value
    End Sub
    Tu peux alors boucler sur les deux dimensions du tableau... Es-tu certain d'avoir besoin de VBA pour cela? Ne serait-ce pas plus simple d'utiliser Ecxel qui, a priori, est fait pour ça?

    Il faudrait évidemment mieux préciser ton besoin avec une copie d'écran. Garde pour l'instant le fichier, si tu expliques ton problème (ce que tu dois calculer) correctement avec une copie d'écran, on n'a a priori pas besoin de ton fichier.
    "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...
    ---------------

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2018
    Messages : 61
    Points : 38
    Points
    38
    Par défaut
    Pour Bennasr, toutes mes données sont dans le tableau du premier post (merci au membre qui a mis le tableau en forme !) sauf qu'il y a N tableaux comme celui présenté. En gros, mes calculs vont porter sur des min/max de colonnes ou de lignes et des tris selon les lignes ou colonnes !

    Oui Pierre, je peux me débrouiller avec EXCEL sans VBA pour une grande partie, mais ... ça rame et je pensais qu'en passant par des tableaux j'aurai une meilleure rapidité de sortie des calculs.

    Le tableau ayant quatre dimensions, je ne vois pas comment utiliser ta méthode

  5. #5
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Le sujet semble intéressant... J'avais mis une surveillance dessus en espérant avoir plus d'explications... mais avec si peu d'information sur ce qu'il faut faire....
    Tu es dans ton sujet, tout ça te parait sûrement limpide mais pour nous, en plus de réfléchir à d'éventuelles solutions, il faut d'abord comprendre


    Chaque semainier (que l'on ne voit pas ici?) doit-être comparait avec le contenu des semaines type pour pouvoir comptabiliser le nombre de semaines correspondant à chaque type, c'est ça?

    Les semainiers ne comportent qu'une seule ligne avec les horaires ou c'est un tableau avec une ligne d'horaires par semaine?

    Avec VBA on peut faire des tableaux à x dimensions... mais est-ce vraiment souhaitable pour faire des comparaison... pas sûr ou du moins ça va dépendre de l'organisation des données.
    [Edit] Et je suis d'accord sur le fait que le VBA n'est peut-être pas utile [Edit]

    Aide nous à t'aider.
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    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
    Je reste persuadé qu'Excel est l'outil pour réaliser ce genre de choses, mais comme Qwerty, je reste sur ma faim concernant les explications fournies.

    Tu donnes le schéma type des semaines, mais on ne voit pas d'où viennent les chiffres de la dernière colonne, sur base de quel calculs ils sont obtenus ni les données du tableau qui permettent ledit calcul.

    Tu parles de calculs, mais ici, je n'en vois qu'un, celui du nombre de fois qu'une semaine est utilisée...

    Sois plus précis et plus complet dans tes explications, en n'orientant pas celles-ci sur la solution que tu entrevois (VBA) mais comme si tu remplissais un cahier des charges pour un développeur.
    "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...
    ---------------

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2018
    Messages : 61
    Points : 38
    Points
    38
    Par défaut
    Oui ! Vous avez raison, peu d'infos car je voulais être synthétique et ma question était vraiment et uniquement, comment remplir "MIEUX" une table VBA à partir d'un tableau EXCEL ?

    Mais je comprends qu'intellectuellement on veuille en savoir plus et je vais essayer de vous satisfaire sur ce point

    Le tableau indiqué est saisi par UNE personne, y compris le nombre de semaines, et une fois rempli est utilisé pour calculer des étendues horaires sur les journées, d'où calcul des min de début de journée, des max de fin de journées, et la 1ère dimension (N) correspond au nombre de personne qui remplissent un tel tableau.

    Les types de semaines (A, B , ...) sont identiques pour toutes les personnes (N) et il faudra non seulement connaître les min et max de chaque personne mais aussi calculer quelle personne à le min et le max pour chaque jour et chaque type de semaine ... !!!!

    Bref une vraie galère ... d'où l'idée de voir si ce n'est pas plus simple avec VBA .... mais effectivement ... je commence à douter.

    Et s'il n'y a pas de réponse, ce n'est pas grave, à l'impossible nul n'est tenu

  8. #8
    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
    Je n'ai, à dire vrai, toujours rien compris...

    Je suppose que c'est parce qu'on est vendredi...
    "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...
    ---------------

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2018
    Messages : 61
    Points : 38
    Points
    38
    Par défaut
    J'en suis désolé ... je vais sérieusement remettre en cause ma façon de m'exprimer ...

    Des personnes saisissent un planning type, celui affiché, et pour des raisons administratives, on cherche à calculer, pour chaque jour de chaque semaine type, qui commence le plus tôt et qui finit le plus tard ! En fonction de cela, pour chaque jour, des calculs d'amplitudes seront effectués et des mesures prises pour répondre aux besoins exigés par les horaires décrits par l'ensemble des N tableaux remplis.

    L'impression de m'enfoncer ...

  10. #10
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Pas simple la communication

    Ce que je comprends
    • Chaque employé produit (ou on le fait pour lui peu importe) un tableau comme celui présenté dans le 1er post
    • Ce tableau présente des semaines type (toujours les mêmes pour tout le monde), la personne indique dans la colonne Nb Semaine le nombre de semaine de chaque type qu'il prévoit de faire sur l'année ?(39 semaines au total)
    • A partir d'ici je flotte un peu
    • Je comprends sur le principe que sur chaque semaine de l'année, vous regardez pour une semaine donnée et pour chaque jour, qui commence le plus tôt et qui fini le plus tard.
    • Questions:
      • Comment est organisée l'année? Une fois que tous les tableaux type sont renseignés, vous devez rechercher comment placer les semaines type que les employés doivent réaliser afin d'avoir la plus grande amplitude? ou une amplitude spécifique en fonction des activités de la journée? ou...?
      • Tu parles de comparer les min est les max mais la comparaison n'a de sens que pour une semaine donnée. Prenons la semaine 7 de l'année, on a 3 employés présents
        • Comment est déterminé le type de semaine.
          • Est-ce que la semaine 7 est une semaine de Type G et les 3 employés feront ces horaires?
          • Ou est-ce que chacun des 3 employés va faire une semaine type différente (je pense que c'est ça)
            • Dans ce cas, ça veut dire qu'il faudra décrémenter "Nb Semaine" des 3 employés en fonction de la semaine type qu'ils auront à faire, c'est ça?



      • J'imagine que contrairement au tableau fourni, les types de semaines ont des variations horaires (ici seul le type C diffère des autres type). Peux tu mettre le vrai tableau?
      • Ces types de semaine sont gravés dans le marbre, ou il sont sujet à modification d'une année sur l'autre?



    Il y a bien sûr un peu de curiosité intellectuelle mais pas que. Si on ne comprends pas les opérations qui sont à réaliser, il est difficile de déterminer quelle solution est la "meilleure" (ou la plus adaptée).

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2018
    Messages : 61
    Points : 38
    Points
    38
    Par défaut
    Bonsoir,

    Effectivement la communication n'est pas toujours simple, le souci étant en l'occurrence que ma question était purement technique et que savoir ce que l'on fait de la table importait peu, il me semble. L'intellect est important et je vais essayer de répondre au mieux a tes questions en sachant que ma problématique était vraiment "Est-il possible de mettre chaque case du tableau dans une table VBA autrement qu'en faisant une boucle for next sur l'ensemble des dimensions (CA je l'ai fait et ca marche très bien ^^).
    Une autre question pouvant être "Est-il possible de calculer un min ou un max sur une dimension d'une table exemple : min( table(x,x,2,X) quelle que soit la valeur de x, le min des valeurs ou la dimension 3 a pour indice "2" ?)
    tab
    Citation Envoyé par Qwazerty Voir le message
    Merci à toi pour tes remarques dont certaines, quoi qu'il en soit, m'ont fait réfléchir à certaines ... impasses ;o)

    (J'avais fait des réponses dans le corps de ton message mais ça ne doit pas être la bonne méthode sur ce forum, cela a été supprimé )

  12. #12
    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
    Citation Envoyé par Burngun Voir le message
    [...]"Est-il possible de mettre chaque case du tableau dans une table VBA autrement qu'en faisant une boucle for next[...]
    J'ai répondu à cette question au message #3: t = Range("a1:c10").Value*. Sur des tailles de Range "raisonnables", c'est instantané. Comme une plage de cellules est à deux dimensions, tu récupères un array (tableau VBA) à deux dimensions de base 1 (Un array créé avec Range.Value sera toujours de base 1, quelle que soit la ligne Option Base du module, voir mon billet à ce sujet). Pour des tableaux à plus de deux dimensions, tu dois les charger par boucle, je ne connais pas d'autre solution.

    Citation Envoyé par Burngun Voir le message
    [...]
    Une autre question pouvant être "Est-il possible de calculer un min ou un max sur une dimension d'une table exemple : min( table(x,x,2,X) quelle que soit la valeur de x, le min des valeurs ou la dimension 3 a pour indice "2" ?)[...]
    Oui, c'est possible, mais sur un array, tu dois obligatoirement boucler sur la ou les dimensions que tu souhaites inspecter. Et c'est là que je dis qu'il y a de fortes chances qu'Excel soit plus rapide que VBA, si les valeurs de l'array proviennent de cellules Excel. Si non, on pourrait toujours transférer les valeurs de l'array dans une plage d'une feuille temporaire et utiliser Excel. A chacun de voir s'il préfère tout coder (approche de programmeur) ou utiliser ce qui existe dans Excel (approche d'utilisateur pragmatique d'Excel)


    Citation Envoyé par Burngun Voir le message
    [...]Est-il possible de calculer un min ou un max sur une dimension d'une table exemple : min( table(x,x,2,X) quelle que soit la valeur de x, le min des valeurs ou la dimension 3 a pour indice "2" ?)[...]
    Manipules-tu vraiment des tableaux à 4 dimensions ou la question est-elle purement théorique? Car il est assez rare de manipuler des tableaux de ce genre.






    Citation Envoyé par Burngun Voir le message
    [...]
    (J'avais fait des réponses dans le corps de ton message mais ça ne doit pas être la bonne méthode sur ce forum, cela a été supprimé )
    Rien n'a été modéré dans la discussion



    * Si la plage est monocellulaire, Range.Value ne renvoie pas un tableau mais uniquement la valeur de la cellule. Si l'on souhaite obtenir quand même un tableau, on passera pas une fonction qui renverra un tableau même pour une plage monocellulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function getArrayFromRange(r As Range)
      Dim t
      If r.Count = 1 Then
        ReDim t(1 To 1, 1 To 1)
        t(1, 1) = r.Value
      Else
        t = r.Value
      End If
      getArrayFromRange = t
      Erase t
    End Function
    "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...
    ---------------

  13. #13
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut
    Citation Envoyé par Burngun Voir le message
    (J'avais fait des réponses dans le corps de ton message mais ça ne doit pas être la bonne méthode sur ce forum, cela a été supprimé )
    Oui il faut entourer la citation avec des balises [Quote ] puis commenter et le refaire pour chaque lignes...

    Citation Envoyé par Burngun Voir le message
    ma problématique était vraiment "Est-il possible de mettre chaque case du tableau dans une table VBA autrement qu'en faisant une boucle for next sur l'ensemble des dimensions
    Pierre à répondu dans son 1er message à cette aspect là. Il est possible de transférer avec un ligne de code le contenu d'une partie de la feuille dans une matrice. Faire des manipulations/interprétations du contenu d'une matrice est plus rapide qu'à partir d'une feuille...Si tant est bien sûr qu'aucune fonction native d'Excel ne puisse faire le travail (d'où l'intérêt porté à ce que tu souhaites faire)
    Si tu entends par la de mettre l’ensemble des tableaux contenus sur les différentes feuilles dans une matrice, c'est différent... Il serait possible de faire une collection de matrices...

    Citation Envoyé par Burngun Voir le message
    Une autre question pouvant être "Est-il possible de calculer un min ou un max sur une dimension d'une table exemple : min( table(x,x,2,X) quelle que soit la valeur de x, le min des valeurs ou la dimension 3 a pour indice "2" ?)
    Je dirais oui et non... Si tu entends faire directement appel à la fonction min/max d'excel en lui transmettant une partie de l'adresse de la matrice, je dirais non. Si tu extrais une partie de la matrice pour la mettre dans une autre et transmettre cette nouvelle matrice à min/max, je pense que oui mais vu que tu devras faire une boucle sur les éléments pour les transvaser dans une nouvelle matrice... autant coder toi même la recherche du min/max dans ta boucle (il suffit d'avoir 2 variables et de conserver dans l'une la valeur la plus petite rencontré, dans la l'autre la plus haute )
    Dans les faits à l'intérieur de ta boucle tu auras un code qui réalise quelque choses comme ça (pas testé)
    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
    Dim sgLeMin As Single, sgLeMax As Single
     
    'On initialise avec des valeurs qui n’existent pas dans la matrice
    LeMin = -1
    LeMax = -1
     
    For iColTab = xColDebut To xColFin
        For lgRowTab = yRowDebut To yRowFin
            'à la 1ère itération, on prend les valeurs de départ
            If sgLeMin = -1 Then sgLeMin = CSng(MonTableau(lgRowTab, iColTab))
            If sgLeMax = -1 Then sgLeMax = CSng(MonTableau(lgRowTab, iColTab))
            'aux boucles suivantes on gardera les valeurs supérieures et inférieures
            If CSng(MonTableau(lgRowTab, iColTab)) < sgLeMin Then LeMin = CSng(MonTableau(lgRowTab, iColTab))
            If CSng(MonTableau(lgRowTab, iColTab)) > sgLeMax Then LeMax = CSng(MonTableau(lgRowTab, iColTab))
        Next
    Next
    Citation Envoyé par Burngun Voir le message
    Merci à toi pour tes remarques dont certaines, quoi qu'il en soit, m'ont fait réfléchir à certaines ... impasses ;o)
    Dans la limite de mes connaissances actuelles et de ma compréhension de ta problématique mais le forum est là pour ça

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2018
    Messages : 61
    Points : 38
    Points
    38
    Par défaut
    Je vais clore en vous remerciant pour les remarques instructives ... je me remets à VBA EXCEL après des années d'abstinence , une tentative avortée sur ACCES il y a quelques mois et ... une très lointaine carrière en C/C++ qui est quand même assez différent :o( ... faut se remettre le cerveau en marche !

    Pour Pierre ... j'avais mis toutes mes réponses dans le corps du message et winjerome a tout retiré ... ce que je comprends parfaitement ! Ca ne devait être très lisible

    Pour Piere et qwazerty, j'ai fait quelques essais sur un prototype pour 7 tableaux ... mon idée était de recalculer après le change d'une des valeurs de début ou fin, ça met environ 2 secondes, ce qui est court mais trop long pour la fluidité en saisie à la volée. J'ai mi un bouton "calculer" qu'on activera en fin de saisie et ... ça ira bien ! J'ai tenu compte de vos conseils et quasiment tout se fait avec des feuilles temporaires et des boucles sur les cellules

    Merci encore et à plus tard car il y aura forcément d'autres mystères !

  15. #15
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut
    Si tu as trouvé un solution qui t'est satisfaisante tant mieux.
    Par contre
    Citation Envoyé par Burngun Voir le message
    J'ai tenu compte de vos conseils et quasiment tout se fait avec des feuilles temporaires et des boucles sur les cellules
    Je ne pense pas avoir vu un tel conseil, le traitement de données sur feuille est bien plus long que dans des tableaux internes, si tant est que des formules ne puissent pas faire le boulot.

    Bon courage pour cette reprise.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  16. #16
    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
    Citation Envoyé par Qwazerty Voir le message
    [...]
    Je ne pense pas avoir vu un tel conseil[...]
    Je n'ai moi non plus ni vu ni donné de conseil de ce genre. Je conseille de passer d'abord par des formules, et à n'utiliser les array en VBA que s'il y a vraiment un problème de performance. Certaines formules traduites en VBA permettent de travailler avec des matrices et donc d'accélérer certains calculs.

    Mais comme on ne sait pas exactement les calculs que tu réalises, on ne sait pas aller plus loin, car dans ton cas, la solution risque bien d'être spécifique en fonction du volume des données et des traitements à réaliser.
    "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...
    ---------------

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2018
    Messages : 61
    Points : 38
    Points
    38
    Par défaut
    Oui ! Votre conseil était de faire moins de VBA, plus d'EXCEL, donc des formules et c'est ce que j'ai fait au maximum ;o)

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 31/08/2017, 03h12
  2. lancer une macro VBA excel à partir de SAS base
    Par id301077 dans le forum SAS Base
    Réponses: 6
    Dernier message: 17/12/2009, 18h07
  3. [VBA-EXCEL] Gestion des erreurs et manipulation du contenu d'une cellule
    Par Froggy007 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/09/2008, 20h42
  4. VBA EXCEL : Concaténation des cellules d'une colonne
    Par kikaillo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/07/2007, 17h37
  5. [VBA-Excel]Copier des cellules vers un autre classeur
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/10/2006, 18h18

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