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 :

petit Probleme dimention matrice


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut petit Probleme dimention matrice
    Bonjour,

    Je joins mon code c'est juste une question sur la dimension de la matrice resT qui est (6,1) alors qu'elle devrait etre de 1,6 c'est pas logique
    une multiplication de (1,33) (33,6) ==> (1,6)

    Voila je sais que ce n'est rellement de la prog à premiere vue , mais je pense qu'au finale ca l'est , car je pense qu'il y a surement un truc qui m'echape.


    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
        'revoir les dimentions
    Sub Delta_Other_Currency_Pos(xlsheet As Worksheet, ByVal Perimetre As String, ByVal Tableau As String)
     
      'Defintion des variables
    Dim Matrice(), TabCurrency(), Mat(), TabPeriMonnaie(), res(1, 6), resT(), SresT(), Tabl()
    Dim i As Long, j As Long
    Dim dico As Dictionary
    Dim AllRange As Range, MyRange As Range
    Dim NbL As Long
    Dim Val As Double
    Dim Perimetre_Nom_Feuille As String
      'On determine NbL
    NbL = xlsheet.Range("D" & Rows.Count).End(xlUp).Row
        'definition du range
    ThisWorkbook.Worksheets("Delta").Activate
    With ActiveSheet
        Set AllRange = .Range(Range("D11"), Range("D" & NbL))
    End With
    AllRange.Select
     
        'on recupere le tableau des devises non travaillées
    For Each MyRange In AllRange
        Select Case Perimetre
            Case Is = "LQB TRD"
                If (Not MyRange.Value = "EUR" And Not MyRange.Value = "JPY") And Not MyRange.Value = "USD" Then
                    i = i + 1
                    ReDim Preserve TabCurrency(i)
                    TabCurrency(i) = MyRange.Value
                End If
            Case Is = "LDN CF 70805"
                If Not MyRange.Value = "EUR" And Not MyRange.Value = "USD" Then
                    i = i + 1
                    ReDim Preserve TabCurrency(i)
                    TabCurrency(i) = MyRange.Value
                End If
            End Select
    Next MyRange
        'Copie du range dans la matrice
    ThisWorkbook.Worksheets("Parametrage").Activate
    Matrice = ActiveSheet.Range("Mat_Transition").Value
    For i = 1 To UBound(TabCurrency)
        TabPeriMonnaie = Fonctions.getP_Ligne(TabCurrency(i), xlsheet, Perimetre)
        ThisWorkbook.Worksheets("Delta").Activate
     
            'Si la premiere ligne vide alors vide tt court
        If Not IsEmpty(TabPeriMonnaie(1)) Then
            Mat = ActiveSheet.Range(Range("M" & TabPeriMonnaie(1)), Range("AS" & TabPeriMonnaie(2))).Value
        Else:
            Exit Sub
        End If
            'certain tableau vide
        'Erase resT
     
        resT = Application.WorksheetFunction.MMult(Mat, Matrice)
     
        For j = 1 To UBound(resT, 1)
                'on somme les colonnes
            Val = Application.WorksheetFunction.Sum(Application.WorksheetFunction.Index(resT, j))
            ReDim Preserve Tabl(1, j)
            Tabl(1, j) = Val
        Next j
    Next i
        'transpose
    Mat = Application.WorksheetFunction.Transpose(Tabl)
                'copier tableau dans un range
            If Perimetre = "LQB TRD" Then
                Perimetre_Nom_Feuille = "DB LQB"
            Else:
                Perimetre_Nom_Feuille = "DB Agencies"
            End If
     
    ThisWorkbook.Worksheets(Perimetre_Nom_Feuille).Activate
    ActiveSheet.Range(Tableau) = Mat
    End Sub
    Allez le RC LEns

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    j'ai beau me creuser la tête, je ne comprend pas à quoi sert ta variable res(1,6)
    elle est déclarée mais pas utilisée

  3. #3
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut Oui j'ai renomé
    Oui j'ai renomé en resT et je l'ai oublié mais c'est pas forcement ca le probleme, ma question est : un ubound(tableau, 1) me donne la dimention des lignes n'est ce pas?
    Allez le RC LEns

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    non!tamtam ubound donne la dimension des lignes pas du reste
    donc c'est point final

    maintenant si tu veux la dimension des colonne avec, tu te sert de la source de ton tableau le range(xyy).column.count par exemple
    se rait donc par exemple pour le resize d'une plage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells(1,1).resize(ubound(tableau),range(xy:xy).columns.counts)=tableau
    ici les prentheze elees servent a quioi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (Not MyRange.Value = "EUR" And Not MyRange.Value = "JPY") And Not MyRange.Value = "USD" Then
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 753
    Points : 28 603
    Points
    28 603
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    A lire ce tutoriel Utiliser les variables tableaux en VBA Exce et tout particulièrement le chapitre V-B. UBound
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    en plus ici tu a forcement le 1 er item de vide car un variable tableau commence par l'item 0!!!
    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
    For Each MyRange In AllRange
        Select Case Perimetre
            Case Is = "LQB TRD"
                If (Not MyRange.Value = "EUR" And Not MyRange.Value = "JPY") And Not MyRange.Value = "USD" Then
                    i = i + 1
                    ReDim Preserve TabCurrency(i)
                    TabCurrency(i) = MyRange.Value
                End If
            Case Is = "LDN CF 70805"
                If Not MyRange.Value = "EUR" And Not MyRange.Value = "USD" Then
                    i = i + 1
                    ReDim Preserve TabCurrency(i)
                    TabCurrency(i) = MyRange.Value
                End If
            End Select
    Next MyRange
    donc le i+1 tu le met juste avant "end if " a moins d'utiliser l'option base 1 en haut de module

    ensuite ta variable "i" ne doit pas être utilisé dans deux boucle successives elle se remet pas a zero toute seule il y a risque d'erreur dans l'iteration
    etc... etc...

    ensuite "case is=" ca sert quoi? "case=" tout simplement
    hou lala!!! dur dur hein
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut merci pour toute ces reponses les mecs :)
    les parentheses servent a rien, car j'ai enlevé une condition car j'en avait 4 avant mais j'ai modifié .
    Ensuite pour le ubound il me semble bien et je viens encore de le lire , que le ubound(tableau, 2) donne bien le nombre de colonne sur un tableau double donc je comprend pas que mon tableau n'ai pas 6 colonne , j'ai l'impression qu'il a 6 lignes , donc je comprend pas , mathematiquement c'est pas possible que le resultat me donne un vecteur a 6 lignes . Est ce que , un vecteur ligne ou colonne a forcement un ubound(tableau, 2) de 0 ?
    Je veux dire un vecteur colonne a un ubound(tableau, 2) =1 non ?
    Allez le RC LEns

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    et on continu
    ici soit tu es devin soit quelque chose comme ca enfin bref le bondieu t'a donné une faculté que nous n'avons pas nous humble mortel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ThisWorkbook.Worksheets(Perimetre_Nom_Feuille).Activate
    ActiveSheet.Range(Tableau) = Mat
    comment sais tu a l'avance que l'adresse de ta plage de réception en l'occurrence ici représentée par la variable "tableau" et dimensionné correctement sachant que tu utilise redim preserve pour tes tableaux ??????????

    j'arrête la je te laisse méditer sur la structure TOTALE de ta macro car a mon avis le soucis est la hein!!!!

    si j'ai un conseil a donner se serait celui ci :

    nommer une variable avec un nom ne ressemblant pas trop a une fonction ou une expression utilisé par l'app ou une certaine logique de programmation
    appelle la toto ou ce que tu veux ton addresse de plage mais pas tableau sa prête a confusion
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Ah Ah patrick tu me blase , alors le select case efectivement on peut modifier mais bon c'est du pinaillage par contre pour le i merci beaucoup , ca j'avais pas vu , comme quoi j'ai pas posté pour rien merci beacoup
    Allez le RC LEns

  10. #10
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    et on continu
    ici soit tu es devin soit quelque chose comme ca enfin bref le bondieu t'a donné une faculté que nous n'avons pas nous humble mortel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ThisWorkbook.Worksheets(Perimetre_Nom_Feuille).Activate
    ActiveSheet.Range(Tableau) = Mat
    comment sais tu a l'avance que l'adresse de ta plage de réception en l'occurrence ici représentée par la variable "tableau" et dimensionné correctement sachant que tu utilise redim preserve pour tes tableaux ??????????
    Car c'est un range qui est un 6,6 que j'ai deja nommé donc il est obligé d'etre en 6x6

    J'arrête la je te laisse méditer sur la structure TOTALE de ta macro car a mon avis le soucis est la hein!!!!

    si j'ai un conseil a donner se serait celui ci :

    nommer une variable avec un nom ne ressemblant pas trop a une fonction ou une expression utilisé par l'app ou une certaine logique de programmation
    appelle la toto ou ce que tu veux ton addresse de plage mais pas tableau sa prête a confusion
    Citation Envoyé par patricktoulon Voir le message
    en plus ici tu a forcement le 1 er item de vide car un variable tableau commence par l'item 0!!!
    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
    For Each MyRange In AllRange
        Select Case Perimetre
            Case Is = "LQB TRD"
                If (Not MyRange.Value = "EUR" And Not MyRange.Value = "JPY") And Not MyRange.Value = "USD" Then
                    i = i + 1
                    ReDim Preserve TabCurrency(i)
                    TabCurrency(i) = MyRange.Value
                End If
            Case Is = "LDN CF 70805"
                If Not MyRange.Value = "EUR" And Not MyRange.Value = "USD" Then
                    i = i + 1
                    ReDim Preserve TabCurrency(i)
                    TabCurrency(i) = MyRange.Value
                End If
            End Select
    Next MyRange
    donc le i+1 tu le met juste avant "end if " a moins d'utiliser l'option base 1 en haut de module

    ensuite ta variable "i" ne doit pas être utilisé dans deux boucle successives elle se remet pas a zero toute seule il y a risque d'erreur dans l'iteration
    etc... etc...

    ensuite "case is=" ca sert quoi? "case=" tout simplement
    hou lala!!! dur dur hein
    Non car j'ai une option base 1 en haut je commence toujour mes indices a 1
    Allez le RC LEns

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    on t'a donné un lien avec dans le pargraphe concerné des exemples vu que visiblement tu n'y est pas allé je te le retranscrit ici
    Option Explicit
    Option Base 0


    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 Test_UBound()
        Dim Tab_x() As Long
        Dim Tab_y(1 To 20, 5 To 30) As Integer
        Dim Tab_z(10) As String
     
        ReDim Tab_x(5)
        Debug.Print UBound(Tab_x) 'Renvoie 5
     
        Debug.Print UBound(Tab_y) 'Renvoie 20
        Debug.Print UBound(Tab_y, 2) 'Renvoie 30
     
        Debug.Print UBound(Tab_z) 'Renvoie 10
     
        ReDim Tab_x(4 To 8, 1 To 10, 1 To 20)
        Debug.Print UBound(Tab_x) 'Renvoie 8
        Debug.Print UBound(Tab_x, 3) 'Renvoie 20
    End Sub
    UBOUND DONNE LE NOMBRE DE LIGNE UN POINT C'EST TOUT!!!!!!! c'est plus clair dans ta tête comme ca ?????
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #12
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Et bien alors relis ce que tu as ecris car si c'est le nombre de lignes , alors tu m'expliqueras comment il peut donner 30 dans
    Debug.Print UBound(Tab_y, 2) 'Renvoie 30, car le 2 represente la dimension deux , et la deuxieme dimention c'est les colonnes, et desolé de te decevoir , mais oui j'ai ete voir
    Allez le RC LEns

  13. #13
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    il donne 30 car il y 30 lignes dans la colonne 2 du tableau
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  14. #14
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Alors si tu met 3 ca sera dans une troisieme colonne? c'est pas possible , une dimension n'est pas une colonne
    (1,2,3) est un tableau 3D , donc longueur largeur hauteure (couche)
    Le 3 ne correspond pas a la 3eme colonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Base 1
    Sub Boucle()
    Dim aa As Variant
    aa = Range("A1").CurrentRegion
     
    For a = LBound(aa) To UBound(aa)
        For b = LBound(aa, 2) To UBound(aa, 2)
            Cells(a, b + 4) = aa(a, b)
        Next b
    Next a
    End Sub
    La première boucle For a = LBound(aa) To UBound(aa) traite chaque ligne du tableau enregistré dans notre variable et le seconde, For b = LBound(aa, 2) To UBound(aa, 2), chaque colonne de chaque ligne.
    Allez le RC LEns

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    création de tableau en mémoire

    tableau a 2 colonneet 20 lignes)
    creation tableau a 2 colonne et 10 ligne dans la premiere et 20 lignes dans la 2eme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim tab(1 to 10,1 to20)
    creation d'un tableau a 3 colonne et 20 lignes
    création d'un tableau a 3 colonne mais avec un nombre de lignes différent pour chaque colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim tab( 1 to 20, 5 to 18,1 to 50)
    c'est plus clair ?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #16
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Mais la je suis tout a fait d'accord, mais il faut pas confondre le nombre de colonne qui est representé par le chiffre apres la premiere virgule et la dimension., chaque virgule est la dimension . Sauf le dernier je ne suis pas d'accord car tu confond . la 3 eme dimension corespond au volume.
    Le deuxieme exemple c'est plutot 10 lignes et 20 colonnes , je crois bien

    surtout si tu les met dans un range avec un resize , je confirme ce que je dis
    Allez le RC LEns

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    prend une feuille de papier roule la en tube ,met un bout de scoth pour la garder en cylindre ,pose la sur la table , met un gros dico dessus
    tu obtiens quoi?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  18. #18
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    ??? lol , une feuille de papier ne supporte pas un dictionnaire meme un de poche, donc ca ne donnera pas grand chose.

    De toute facon on s'ecarte de la discution, moi je souhaiterais juste savoir pourquoi j'ai un vecteur (6) au lieu d'un vecteur (1,6) voila tout
    Allez le RC LEns

  19. #19
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 753
    Points : 28 603
    Points
    28 603
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    D'après le code que tu as publié à 16h55 et que je reproduis ici, je te conseille d'ajouter la ligne 4 pour visualiser l'adresse de la liste et vraisemblablement tu comprendras mieux le problème.
    Je te conseille d'ailleurs de compléter la filiation complète du Range (Feuille + classeur) pour éviter les inévitables erreurs dû au fait qu'une autre feuille soit active au lieu de celle désirée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Boucle()
     Dim aa As Variant
     aa = Range("A1").CurrentRegion
     MsgBox Range("A1").CurrentRegion.Address
     For a = LBound(aa) To UBound(aa)
      For b = LBound(aa, 2) To UBound(aa, 2)
       Cells(a, b + 4) = aa(a, b)
      Next b
     Next a
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  20. #20
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Sur cet exemple plus simple je constate la même anomalie que toi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
    Option Base 1
    Sub test()
        Dim Mat, Matrice, resT
        Mat = [A2:D2].Value '(1, 4)
        Matrice = [A2:B5].Value '(4,2)
        resT = Application.WorksheetFunction.MMult(Mat, Matrice)
        Debug.Print UBound(resT, 1) ', UBound(resT, 2) ' matrice (2,1) au lieu de (1,2)
        '
        Mat = [A2:E3].Value '(2,5)
        Matrice = [A2:C6].Value '(5,3)
        resT = Application.WorksheetFunction.MMult(Mat, Matrice)
        Debug.Print UBound(resT, 1), UBound(resT, 2) 'correct, matrice (2,3)
    End Sub
    Pourtant avec la fonction sur la feuille les dimensions sont correctes.
    Ca sent le bug... A part utiliser un transpose() lorsque Mat fait 1 ligne pour y pallier je ne vois pas.

    eric

    PS: j'ai tenté avec evaluate(), même punition.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Petit problème de fork
    Par osmose22 dans le forum Linux
    Réponses: 7
    Dernier message: 18/03/2007, 21h10
  2. [TP]petit probleme avec solution
    Par pompompolom dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 02/12/2004, 19h48
  3. petit probleme avec l'éditeur de builder
    Par qZheneton dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/10/2004, 16h19
  4. petit probleme de requete
    Par nico33307 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 25/08/2004, 11h36
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

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