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 :

[debutant] variable de type Range et Integer


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut [debutant] variable de type Range et Integer
    Bonjour. Je pense que ce problème est assez simple mais bon je n'arrive pas à m'en sortir.

    Je crois voir d'où vient le pb mais je n'ai jamais fait de VBA et là j'ai un petit bug à résoudre ...

    En fait l'erreur se produit quand sur une variable de type Range est effectée une valeur exclusivement numérique.

    Voilà mon code (épuré) :
    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
    
    Sub UpdateComboBox()
    
    
        ThisWorkbook.Worksheets("setting").Select
        
        Dim unItem, unCA As Range
        
        PROGRAM_LIST.Clear
        CA_LIST.Clear
    
        If ThisWorkbook.Worksheets("setting").Range("A13") <> "" Then
            Dim previousProgram As String
            previousProgram = ""
            
            For Each unItem In ThisWorkbook.Worksheets("setting").Range("A13", Range("A13").End(xlDown))
                
               If unItem <> previousProgram Then
                    previousProgram = unItem
                    PROGRAM_LIST.AddItem (unItem)
                End If
    
                If ThisWorkbook.Worksheets("setting").Range("A4") <> "" Then
                    PROGRAM_LIST.Text = ThisWorkbook.Worksheets("setting").Range("A4")
                    
                    If unItem = ThisWorkbook.Worksheets("setting").Range("A4") Then
                        Set unCA = unItem.Offset(0, 1)  // ici 
                        
                        If Not unCA Is Nothing Then
                            // je n'entre pas là si la valeur est numérique
                            If ThisWorkbook.Worksheets("setting").Range("B4") = "x" Then
                                ThisWorkbook.Worksheets("setting").Range("B4") = unCA
                                ThisWorkbook.Worksheets("setting").Range("B2") = unCA.Offset(0, 1)
                                data_PM.RapportPath = ThisWorkbook.Worksheets("setting").Range("B2")
                            End If
                            MsgBox "CA ajoute liste -> " + unCA //pas affiché si numérique
                            CA_LIST.AddItem unCA
                        End If
                        If ThisWorkbook.Worksheets("setting").Range("B4") <> "" Then
                            CA_LIST.Text = ThisWorkbook.Worksheets("setting").Range("B4")
                        End If
                    End If
                End If
            Next
        End If

    Donc voilà, je suis un peu bloqué. Quel type utiliser ? Je peux caster en VBA ?

    merci d'avance

  2. #2
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Salut,
    A la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not unCA Is Nothing Then
    je mettrais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsNull(unCA) then

  3. #3
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Voilà en fait je crois que j'ai mal situé l'erreur.

    A priori ça vient plutot de la ligne en rouge (cf premier post).
    Je crois que le test est faux. Pourtant quand j'affiche les valeurs ça à l'air d'etre les memes ...

  4. #4
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Il semblerait que unItem soit vide.. tu ne l'as pas initialisé.
    Avant le test en rouge, fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print "Valeur de unItem : " & unItem
    pour voir ce qu'il s'affiche dans la fenêtre d'exécution

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Essaye le pas à pas pour voir les différentes valeurs de tes variables.

    tu verra aussi par quels endroits passe ton programme (si il rentre dans les if etc...)

    touhe F8 pour aller d'etape en etape

  6. #6
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    bon alors le Debug.Print affiche des valeurs à chaque fois.

    En ce qui concerne lepas à pas. En fait je débute vraiment et quand je lance l'exécution (par "lecture" ou par mon fichier excel), je ne sais pas trop comment faire.

    enfin je vais essayer le mode debug ...

    mais pourtant quand j'affiche unItem et la valeur de la cellule A4 il m'affiche bien les meme valeurs ...

    Les objets de type Range c'est koi exactement ? Ya pas de contradication sur les valeurs numériques ? est ce de cette manière (=) que je teste l'égalité ?

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

Discussions similaires

  1. Compréhension variable de type integer
    Par Zankyu dans le forum Fortran
    Réponses: 3
    Dernier message: 31/10/2014, 14h41
  2. variable de type real se transforme en integer
    Par Infra_Red dans le forum Fortran
    Réponses: 1
    Dernier message: 22/08/2013, 08h16
  3. [XL-2003] décomposition d'une chaîne de caratères pour alimenter une variable de type range
    Par Umaro137 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/08/2009, 13h31
  4. [XL-2003] extraction de la totalité d'une listbox multicolonne vers une variable de type range
    Par Umaro137 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/08/2009, 15h02
  5. Réponses: 16
    Dernier message: 12/11/2008, 20h36

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