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 :

Variable integer ne prenant pas la valeur souhaitée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Par défaut Variable integer ne prenant pas la valeur souhaitée
    Bonjour à tous !

    j'ai un problème depuis quelques jour sur ma macro que je n'arrive pas à résoudre...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numero_mois = Workbooks(nom_fichier_données).Worksheets(1).Cells(numero_ligne, indice_colonne_mois)
    Sur cette ligne, je veux faire prendre une valeur à la variable integer numero_mois. j'ai bien mis le chemin du fichier dans la variable nom_fichier_données, c'est bien la feuille 1 et la cellule indiquée...

    Ma macro comporte d'autres problèmes mais je ne peux montrer le code...

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    je te proposerai de rajouté ".Value" a ta ligne de programmation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numero_mois = Workbooks(nom_fichier_données).Worksheets(1).Cells(numero_ligne, indice_colonne_mois).Value
    en considérant que la cellule désignée contienne ton mois

    Enfin c'est ce que j'ai pu comprendre

    tu dis si c'est ça

    A+

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Variable integer ne prenant pas la valeur souhaitée
    Elle prend quelle valeur ? et quelle est la valeur de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(nom_fichier_données).Worksheets(1).Cells(numero_ligne, indice_colonne_mois)

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Par défaut
    La valeur "lue" est un nombre ; il n'y a dans la cellule qui doit être lu, qu'un seul chiffre (j'ai décomposé la date au préalable car le fichier Excel vient de l'exportation d'un logiciel qui ne met pas les dates en format "date" mais en texte. Donc impossible de ne prendre que le mois.

    J'ai donc dans la formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numero_mois = Workbooks(nom_fichier_données).Worksheets(1).Cells(numero_ligne, indice_colonne_mois).Value
    numero_mois = variable integer
    numero_ligne = variable integer
    indice_colonne_mois = constante
    nom_fichier_données = "\\ le chemin complet"

    En rajoutant .value à la fin de mon code j'ai toujours l'erreur '9' ...

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    La cellule est certainement au format texte. Publie le code qui remplit la cellule.

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Par défaut
    Le problème c'est que je n'ai pas d'autorisation pour publier plus sur mon code. Du moins, je ne peut pas le publier sur un forum...

    Cependant, j'ai mis plus avant dans mon code :

    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
    Columns("E:E").Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Columns("E:E").Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Columns("E:E").Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
     
        Columns("D:D").Select
        Selection.Copy
        Columns("G:G").Select
        ActiveSheet.Paste
     
        Columns("D:D").Select
        Selection.TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
            :="/", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), _
            TrailingMinusNumbers:=True
     
        Columns("D:F").Select
        Selection.EntireColumn.Hidden = True
     
     
        Range(Cells(1, 4), Cells(10000, 6)).NumberFormat = "0"
    C'est bien barbare, mais au moins c'est facile à faire pour moi.

    J'insère des colonnes, je décompose ma date qui est en format texte sur 3 colonnes.
    Ensuite, je les converti en format nombre.

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    .NumberFormat ne fait que mettre un format, il ne converti pas un texte en numérique.
    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numero_mois = clng(Workbooks(nom_fichier_données).Worksheets(1).Cells(numero_ligne, indice_colonne_mois).Value)
    eric

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Active d'abord ton classeur, ensuite ta feuille, et utilise une variable objet de type workbook, ce sera plus simple...

    Cela étant, au vu de la macro (Brrr), je gage sur un sérieux problème de conception et d'analyse fonctionnelle, mais tant mieux si ça fonctionne
    "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
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    J'abandonne. Réponds aux questions, c'est une simple question de politesse.

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 46
    Par défaut
    Humm, en fait ton erreur n'est pas sur la ligne que tu demandes à corriger depuis le départ ou jme trompe?

    M'enfin bref, pour la déclaration, vaut mieux un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim WBB As Workbook
     
    Set WBB = Workbooks.Open("\\chemin")
    Ensuite et peut-être que je me trompe, tu veux récupérer tes données dans la colonne mois

    Vaut mieux faire un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim data_colonne_mois As Variant
    Dim range As Range
     
    Set range = WBB.Sheets(1).Range("A1:A" & nombre_ligne) 'remplacer A par la colonne concernée)
    data_colonne_mois = range.Value
     
    For numero_ligne = 1 To nombre_ligne
    numero_mois = CInt(data_colonne_mois(numero_ligne,1))
    'le reste de ton code
    Next numero_ligne

Discussions similaires

  1. [XL-2010] ma variable x ne reprends pas la valeur voulu
    Par karmas93120 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/09/2014, 20h08
  2. [XL-2003] Variable qui ne retient pas la valeur
    Par Marc_27 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/07/2009, 09h16
  3. Variable qui ne prend aucune pas de valeur
    Par bdptaki dans le forum Delphi
    Réponses: 3
    Dernier message: 29/04/2007, 16h09
  4. [POO] Variable ne contenant pas la valeur attendue
    Par norby042 dans le forum Langage
    Réponses: 5
    Dernier message: 09/11/2006, 10h06
  5. [Tableaux] Variable qui ne prend pas sa valeur
    Par stephane78 dans le forum Langage
    Réponses: 11
    Dernier message: 19/08/2006, 20h30

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