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 :

type de variable et conversion [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 238
    Par défaut type de variable et conversion
    Bonjour a tous,

    J'ai un petit problème en VBA Excel

    en gros je récupère deux valeur dans mon fichier Excel et ensuite je les associe pour ne donné qu'une valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Nom = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
    Version = Range("V3:W4").Value
     
    Lastnum = (Nom & "_" & Version)
    Mais les varaibles ( version et nom ne sont pas du meme type)
    et je ne sais pas comment faire pour que cela fonctionne

    j'ai testé de changer le type, d'utiliser strConv
    mais comme je suis pas super doué il est possible que je fasse mal les choses.

    Version ( 14-245)
    Nom (1 - feuille1 - 2)
    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour sharox,

    Que veux-tu affecter à ta variable "Version" ?
    L'ensemble des valeurs comprises dans la range V3 W4 ?

    "Nom" est une "String" j'imagine.

    Au final "Lastnum" doit contenir l'ensemble "Nom" + {tout ce qui se trouve en V3, V4, W3 et W4} ?

    Cordialement,
    Kimy

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 238
    Par défaut
    Merci de ta réponse kimy_Ire

    Enfaite, dans la variables nom, il y a le nom de mon fichier .xls
    Dans la variable version, il y a des version genre (14-125)

    et dans lastnum je voudrais mettre : le nom de mon fichier et la version a coté

    un exemple, mon fichier s'appel : "excel-test123" et la version est : "16-447"
    alors lastnum = excel_test123_16-447

    (le "_" entre les deux je le rajouterais après c'est pas ce qui me pose problème)

    Range("V3:W4") est juste une cellule fusionné, il y a une seul donnée a l'intérieure

    Merci

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 238
    Par défaut
    Philippe Tulliez

    Lastnum = (Nom & "_" & Version) me renvoie bien une erreur, incompatibilité de type comme tu dis

    je coince la -_-, et je ne comprend même pas pourquoi

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Par défaut
    Bonjour à tous,

    Pour le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Version = Range("V3:W4").Value
    il suffit déjà de mettre,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Version = Range("V3").Value
    Bien à toi.

  6. #6
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Citation Envoyé par sharox Voir le message
    Range("V3:W4") est juste une cellule fusionné, il y a une seul donnée a l'intérieure
    Essaye avec Range("V3") seulement alors !

    Cordialement,
    Kimy

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 238
    Par défaut
    Exacte, merci beaucoup !!
    Mais je ne comprend pas la logique,

    Normalement c'est la même puisque les cellules sont fusionné..

    Enfin bref
    Je vous remercie grandement pour votre aide
    Désolé de mon inaptitude et de vous avoir sollicité..

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 158
    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 : 13 158
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Mais je ne comprend pas la logique,
    Normalement c'est la même puisque les cellules sont fusionné..
    Si tu déclares la variable Version comme variant ou si tu ne la déclares pas comme l'exemple ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub t()
      Dim Version As Variant
      Nom = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
      Version = Range("V3:W4").Value
      Lastnum = (Nom & "_" & Version)
    End Sub
    La variable Version devient une variable tableau de 2 lignes et 2 colonnes et l'erreur 13 se produira en ligne 5 parce-que l'on ne peut pas faire une concaténation avec un tableau.
    En revanche cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Lastnum = (Nom & "_" & Version(1, 1))
    ne renverra pas d'erreur parce-que tu fais la concaténation de la valeur du tableau se trouvant en ligne 1, colonne 1 soit le contenu de V3

    Dans cette procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub t()
      Dim Version As String
      Nom = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
      Version = Range("V3:W4").Value
      Lastnum = (Nom & "_" & Version)
    End Sub
    L'erreur 13 se produira en ligne 4 car tu déclares la variable Version comme un String donc elle ne peut pas recevoir un tableau.

    Pour connaître la taille d'un tableau à deux dimensions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Debug.Print UBound(Version) & "/" & UBound(Version, 2)
    Tu nous dévoiles ensuite (merci pour la précision tardive) que ta plage V3:W4 est fusionnée. Alors dans ce cas comme te l'a suggéré Michaël il faut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub t()
      Dim Version As String
      Nom = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
      Version = Range("V3").Value
      Lastnum = (Nom & "_" & Version)
    End Sub
    Parce-que lorsque l'on fusionne des cellules la référence à la plage fusionnée est celle de la première cellule de la fusion.
    Pour t'en convaincre sélectionne la plage fusionnée et regarde la référence que tu vois dans la zone des noms.

    J'espère que cette petite précsion t'éclairera.
    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

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 158
    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 : 13 158
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cela m'étonne fortement que cette procédure ne te renvoie pas un message d'erreur.
    Soit dans cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Version = Range("V3:W4").Value
    soit dans celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lastnum = (Nom & "_" & Version)
    Par exemple un message comme Erreur 13 - Incompatibilité de type
    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

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

Discussions similaires

  1. [VC++] Help! Conversion de types de variables
    Par OverLorD34 dans le forum MFC
    Réponses: 9
    Dernier message: 12/04/2006, 16h34
  2. Assembleur et type de variable delphi
    Par declencher dans le forum Langage
    Réponses: 5
    Dernier message: 20/06/2004, 23h21
  3. Comparer les types de variable
    Par onipif dans le forum ASP
    Réponses: 11
    Dernier message: 27/05/2004, 18h07
  4. Types de variables entre mysql/php et flash
    Par ramses83 dans le forum Flash
    Réponses: 2
    Dernier message: 06/10/2003, 18h35
  5. [VC++] Help! Conversion de types de variables
    Par OverLorD34 dans le forum MFC
    Réponses: 1
    Dernier message: 02/02/1970, 05h34

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