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 :

Concaténation de vecteurs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Par défaut Concaténation de vecteurs
    Bonjour à tous,

    Je cherche à coder une fonction VBA permettant de concaténer deux vecteurs à une dimension.
    J'ai utilisé le code suivant, mais cela ne fonctionne pas. En effet il est indiqué " incompatibilité de type" sur Ubound. J'ai lu sur les autres sujets liés à ce type qu'il fallait bien redimensionner les vecteurs utilisés, ce que j'ai fait. Lorsque je fais un test en faisant Call Concatenation et en prenant deux vecteurs de ma feuille excel pour argument, cela ne fonctionne pas et me mets que les vecteurs sont vides, ce qui n'est pas le cas !

    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
    Function Concatenation(vec1 As Variant, vec2 As Variant) As Variant
    Dim vecteur() As Variant
    A = Ubound(vec1,1)
    B = Ubound(vec2,1)
    Redim vecteur( A+B,1)
    For i = 1 To A
        vecteur(x, 1) = vec1(i, 1)
        x = x + 1
    Next i
    y = A + 1
    For j = 1 To B
        vecteur(y, 1) = vec2(j, 1)
        y = y + 1
    Next j
    Concatenation = vecteur()
    End Function
    Merci beaucoup d'avance pour votre aide !

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Pourquoi48 Voir le message
    Lorsque je fais un test en faisant Call Concatenation
    Les fonctions personnalisée ne se lancent pas avec des Call (même si ça peut se faire).
    On les utilise comme des variables ou des valeurs.

    en prenant deux vecteurs de ma feuille excel pour argument
    Euh... deux "vecteurs" ou deux zones ?

    J'ai utilisé le code suivant, mais cela ne fonctionne pas. En effet il est indiqué " incompatibilité de type" sur Ubound.
    Sans doute parce que tes vecteurs n'en sont pas.
    Si ce sont des zones, il vaudrait mieux définir tes vecteurs comme des variables internes à la fonction et y placer les données de tes zones en début de macro.

    A et B aussi devraient être déclarées et typées.

    Je ne comprends pas non plus pourquoi tu mets une seconde dimension (en plus égale à 1) dans ta variable vecteur.

    Ton x et ton y ne sont pas initialisés, ni déclarés, ni typés.
    Je ne vois pas trop leur intérêt alors que tu pourrais utiliser i et j.

    Au passage i et j non plus ne sont ni déclarés ni typer.
    Là encore, étant donné que i et j sont des variables "kleenex" qui ne sont pas utilisées en même temps, je ne vois pas l'intérêt d'avoir deux variables.

    Dernier détail (pinaillage) : ce que tu fais n'est pas de la concaténation mais du raboutage.

  3. #3
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Par défaut
    Merci beaucoup pour ta réponse rapide !

    Euh... deux "vecteurs" ou deux zones ?
    Oui ce sont bien des vecteurs, j'utilise en fait une fonction en amont qui transformes des plages en vecteurs.

    Merci pour tes remarques, j'ai bien déclaré et typé toutes les variables, et supprimé les variables inutiles.

    Je ne comprends pas non plus pourquoi tu mets une seconde dimension (en plus égale à 1) dans ta variable vecteur.
    Lorsque je supprime la deuxième dimension, j'ai un message disant "l'indice n'appartient pas à la sélection", je ne comprends pas pourquoi..

    Après ces modifications, la fonction me renvoie bien les valeurs qu'il faut, mais sous forme de range et non de vecteur… et changeant les type je ne parviens pas à la faire fonctionner, à part en gardant Variant..

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Pourquoi48 Voir le message
    Lorsque je supprime la deuxième dimension, j'ai un message disant "l'indice n'appartient pas à la sélection", je ne comprends pas pourquoi..
    Essaye Dim vecteur(2) As Variant.

    Cette ligne m'étonne beaucoup.
    Il est impossible que le VBA l'ai laissée ainsi après validation.
    L'as-tu retouchée après copie sur le forum ?

    Après ces modifications, la fonction me renvoie bien les valeurs qu'il faut, mais sous forme de range et non de vecteur… et changeant les type je ne parviens pas à la faire fonctionner, à part en gardant Variant..
    Comment utilises-tu le résultat de cette fonction ?

Discussions similaires

  1. Concaténation 2 vecteurs sans redondance
    Par FATENMRABET dans le forum Débuter avec Java
    Réponses: 61
    Dernier message: 31/10/2013, 21h42
  2. concaténation des vecteurs de tailles différentes
    Par loulitta dans le forum MATLAB
    Réponses: 16
    Dernier message: 15/01/2010, 12h26
  3. Concaténation pile vecteur
    Par inforum dans le forum SL & STL
    Réponses: 4
    Dernier message: 01/12/2009, 17h05
  4. Concaténer des vecteurs lignes en une seule matrice
    Par ti_linoa dans le forum OpenCV
    Réponses: 3
    Dernier message: 23/06/2008, 17h09
  5. concaténer 2 vecteurs
    Par pelloq1 dans le forum Langage
    Réponses: 2
    Dernier message: 18/06/2008, 13h40

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