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 :

Question simple de concaténation


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Mai 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 61
    Par défaut Question simple de concaténation
    Bonjour à tous!

    Depuis ce matin je galère à trouver mon erreur...et je vois pas. Soyez indulgent alors s'il vous plait

    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
    Function fusion(a, b As Variant) As Variant
    Dim c As Variant
    Dim d, e, f, g As Integer
    ReDim c(UBound(a, 1) + UBound(b, 1), UBound(b, 2))
    Dim i, j As Integer
     
    For i = 1 To UBound(a, 1)
        For j = 1 To UBound(a, 2)
            c(i, j) = a(i, j)
        Next j
    Next i
     
     
    For i = 1 To UBound(b, 1)
        For j = 1 To UBound(b, 2)
            c(i + UBound(a, 1), j) = b(i, j)
        Next j
    Next i
     
     
    fusion = c(UBound(a, 1) + UBound(b, 1), UBound(a, 2))
     
     
    End Function

    Et pour voir si ca marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub essai()
     
    e = Range("A1", "A8")
    d = Range("B1", "B8")
     
     
    Range("D1", Cells(UBound(e, 1) + UBound(d, 1), 4)) = fusion(e, d)
     
     
    End Sub

    En gros ca prend 2 matrices et ca les concatène. J'ai mis un espion sur ma variable c et il choppe les bonnes valeur.

    Sauf que quand je fait tourner le programme pour voir si ca marche, ca me met toujours le même nombre et ca ne concatene pas les 2 matrice, l'une en dessous de l'autre.

    Si une âme charitable pouvait passer par la ^^

    Merci!

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Par défaut
    Bonjour,

    Ce serait possible d'avoir ton classeur pour y jeter un coup d'oeil?
    Et aussi je te conseille d'éviter de donner des nom du style a,b,c,d , toto , tata... Donne plutôt des noms significatif .

    Cordialement.

  3. #3
    Membre actif
    Inscrit en
    Mai 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 61
    Par défaut
    Oui bien sur. C'est un petit code que j'essaie de faire.

    Compris pour les variables. Je vais changer ^^
    Fichiers attachés Fichiers attachés

  4. #4
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Par défaut
    Ta fonction fusion te renvoie un variant et non un tableau donc c'est normal que tu ais une seul valeur(6841). C'est déjà une première piste à explorer.

  5. #5
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    @Mr.Mof : Un Variant peut très bien être un tableau, et d'ailleurs c'est bien le cas ici, je vais regarder plus en détail...

  6. #6
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Alors, il y avait deux petits soucis dans ta fonction :

    Tout d'abord, l'indice du premier élément d'un tableau est par défaut 0. C'est 1 quand tu convertis un range en variant, mais c'est un cas particuliers. Donc on a bien 1 pour e et d dans ton exemple, mais pas pour c que tu crées toi-même. Il faut donc mettre au niveau du dimensionnement de c :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReDim c(1 To UBound(a, 1) + UBound(b, 1), 1 To UBound(b, 2))
    Ensuite, quand tu rends le résultat de la fonction, tu ne prenais que le dernier élément de la matrice, il suffisait d'écrire simplement :
    J'ai fait un test, ça marche comme ça.

    EDIT : Ce n'est pas un bug, mais tu ne penses pas à vérifier que a et b ont le même nombre d'éléments sur leur deuxième dimension (le même nombre de colonnes)

  7. #7
    Membre actif
    Inscrit en
    Mai 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 61
    Par défaut
    Merci beaucoup!

    Je viens d'apprendre un truc

    Bonne journée!

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 28/09/2004, 14h27
  2. Question simple sur la libération des objets
    Par gibet_b dans le forum Langage
    Réponses: 2
    Dernier message: 12/07/2004, 10h01
  3. DTS : Question simple sur sources de données
    Par guignol dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/05/2004, 12h09
  4. [LG]Choix du pascal ou autre ? Questions simples...
    Par vlacq dans le forum Langage
    Réponses: 5
    Dernier message: 30/01/2004, 23h42
  5. Question simple sur les threads :)
    Par momox dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/06/2003, 04h13

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