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 :

Indicage de variable [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut Indicage de variable
    J’aurais besoin d’indicer une variable mais je ne sais pas comment faire. En gros je veux stocker une valeur dans une variable mais je ne sais pas de combien de variables j’aurai besoin. Il faudrait donc que ce nombre de variable s’incrémente en fonction d’un compteur d’éléments (en l'occurance le nombre de cellule non vide d'un range).
    Auriez vous une idée sur la faisabilité ?
    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut variable
    Pour créer ta variable, il te faut savoir quel en sera le type : integer, long, byte, booléen !
    Ensuite, si tu veux l'incrémenter, tu pourras utiliser une boucle (FOR par exemple) ou l'incrémenter en faisant variable = variable + 1
    Mais plus de données et d'explications de ta part seraient le bienvenues.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    mon objectif est de compter des lignes entre des plages mais je ne sais pas par avance combien de plages j'aurai

    Ex tableau Excel
    A.............B..............C
    1 xxxx
    2 ..............xxxx..........xxxx
    3 ..............................xxxx
    4 ..............................xxxx
    5...............xxxx...........xxxx
    6 xxxxx.............................
    7...............xxxxx..........xxxx
    8...............xxxxx..........xxxx

    Explication
    Colonne A : 4 lignes entre deux transactions (ligne 1 a 6)
    Colonne B : 2 paquets (xxx = cellule non vide) entre les transactions (colonne A)
    Colonne C : 3 dates dans le premier paquet et 1 seule dans le deuxieme


    il me faudrait donc une variable indicé disant :
    1er paquet colonne B 3 lignes en colonne C
    2 eme paquet colonne B 1 lignes en colonne C
    du genre element 1 - 1 = 3 puis variable indicé 1 - 2 = 1 avec 1ere indice numero du paquet colonne A, deuxieme indice numero du paquet colonne B

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Citation Envoyé par octane Voir le message
    J’aurais besoin d’indicer une variable mais je ne sais pas comment faire. En gros je veux stocker une valeur dans une variable mais je ne sais pas de combien de variables j’aurai besoin. Il faudrait donc que ce nombre de variable s’incrémente en fonction d’un compteur d’éléments...
    Bonjour,

    Ce que tu décris me semble correspondre à une variable tableau :
    • possède un indice
    • est redimensionnable à souhait


    Vois :

    Conceptualisation des variables tableau en VBA et Application à l'optimisation du code sous Excel


    Utiliser les variables tableaux en VBA Excel


    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier

  5. #5
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    a priori ce serait peut etre ca par contre l'application du cours variable tableau a mon cas precis est assez floue vue que je ne comprends rien au cours...

  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
    Tu peux aussi utiliser les collections

  7. #7
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    j'ai utiliser le tableau je ne sais pas si ca marche. Pour chaque groupe je connais le nombre de ligne je pense grace a cela:
    Resultat(1, i) = h
    Resultat(2, i) = ilig2

    Il faut que je fasse les tests mais je ne vois pas la syntaxe dans ce cas :
    si la somme de toutes les lignes des colonnes 6 et 7 pour chacun des hub i est 0 alors une condition sinon pour chacun des hubs i si le contenu des celules des colonnes 4 sont egales et le contenu des celulles des colonnes 5 est egales alors condition Y
    sinon condition Z
    Comment ecrire cette condition en utilisant la syntaxe Resultat(1, i) et Resultat(2, i) pour ces tests?

    Mon code est :
    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
     
     ilig = 5
                            While InStr(1, sh2.Cells(ilig, 1), sh.Cells(icol, 1)) = 0
                            ilig = ilig + 1
                            Wend
     
                            'compteur nombre de ligne avant transaction suivante
                            iligarb = 0
                            While sh2.Cells(ilig + 1 + iligarb, 1) = ""
                            iligarb = iligarb + 1
                            Wend
     
                            'compteur nombre de hub en colonne 3
                            numhub = 0
                            For ihub = ilig + 2 To ilig + iligarb
                            If sh2.Cells(ihub, 3) <> "" Then
                                numhub = numhub + 1
                            Else
                            End If
                            Next ihub
     
                            ilig = ilig + 1
                            For i = 1 To numhub
                            ilig2 = 1
                            ilig = ilig + 1
                            While sh2.Cells(ilig + 1, 4) <> "" And sh2.Cells(ilig + 1, 3) = ""
                                'ilig2 compteur de date dans un hub Nbre de ligne dans paquet >1
                                ilig2 = ilig2 + 1
                                ilig = ilig + 1
                            Wend
                            Resultat(1, i) = i
                            Resultat(2, i) = ilig2
                            Next i
    j'y suis presque juste un message d'erreur pour le code a cause du tableau, cela retourne :
    "L'indice n'appartient pas a la selection" pour la ligne 44
    Resultat(1, i) = i
    C'est bon signe je veux justmeent donner des indices, mais ca ne marche pas. Quelqu'un connait cette erreur et voit d'ou vient le probleme?



    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    Dim line As Single
        Dim ilig As Integer 'Compteur de ligne
     
        Dim LastLig As Long
     
        Dim sh As Worksheet
        Dim sh2 As Worksheet
     
        Dim Plage As Range
        Dim Resultat() As String
        Dim i As Integer, j As Integer
     
     
     ilig = 5
                            While InStr(1, sh2.Cells(ilig, 1), sh.Cells(icol, 1)) = 0
                            ilig = ilig + 1
                            Wend
     
                            'compteur nombre de ligne avant transaction suivante
                            iligarb = 0
                            While sh2.Cells(ilig + 1 + iligarb, 1) = ""
                            iligarb = iligarb + 1
                            Wend
     
                            'compteur nombre de hub en colonne 3
                            numhub = 0
                            For ihub = ilig + 2 To ilig + iligarb
                            If sh2.Cells(ihub, 3) <> "" Then
                                numhub = numhub + 1
                            Else
                            End If
                            Next ihub
     
                            ilig = ilig + 1
                            For i = 1 To numhub
                            ilig2 = 1
                            ilig = ilig + 1
                            While sh2.Cells(ilig + 1, 4) <> "" And sh2.Cells(ilig + 1, 3) = ""
                                'ilig2 compteur de date dans un hub Nbre de ligne dans paquet >1
                                ilig2 = ilig2 + 1
                                ilig = ilig + 1
                            Wend
                            Resultat(1, i) = i
                            Resultat(2, i) = ilig2
                            Next i
     
                            test = 0
                            ilig = ilig - numhub + 2
                            ilig3 = ilig
                            For i = 1 To numhub
                            If WorksheetFunction.Sum(sh2.Range("F" & ilig3 & ":G" & ilig3 + Resultat(2, i))) = 0 Then
                            test = test + 1
                            ilig3 = ilig3 + Resultat(2, i) + 1
                            End If
                            Next i
                            If test = numhub Then
                            sh.Cells(icol, 140) = "xxx"
                            Else
                            End If
     
                            test = 0
                            ilig4 = ilig
                            For i = 1 To iligarb - 1
                            If sh2.Cells(ilig4 + i - 1, 4) = sh2.Cells(ilig4 + i, 4) And sh2.Cells(ilig4 + i - 1, 5) = sh2.Cells(ilig4 + i, 5) Then
                            test = test + 1
                            End If
                            Next i
                            If test = iligarb - 1 Then
                            sh.Cells(icol, 140) = "xxxxxxx"
                            Else
                            sh.Cells(icol, 140) = "xxxxxxxxxxxxxx"
                            End If

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Relis les tutos données par Ormonth.
    Une variable tableau doit être dimensionnée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Redim Preserve Resultat(1 to 2, 1 to i)
    Resultat(1,i)=i
    PS: Seule la dernière dimension peut être rdimensionnée

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/07/2002, 13h32
  2. variables locales ou globales ???
    Par elvivo dans le forum C
    Réponses: 13
    Dernier message: 03/07/2002, 08h22
  3. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08
  4. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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