Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2011, 11h12   #1
Futur Membre du Club
 
cedric
Inscription : novembre 2008
Messages : 43
Détails du profil
Informations personnelles :
Nom : cedric

Informations forums :
Inscription : novembre 2008
Messages : 43
Points : 17
Points : 17
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
octane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 11h29   #2
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
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.
__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 11h39   #3
Futur Membre du Club
 
cedric
Inscription : novembre 2008
Messages : 43
Détails du profil
Informations personnelles :
Nom : cedric

Informations forums :
Inscription : novembre 2008
Messages : 43
Points : 17
Points : 17
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
octane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 11h49   #4
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
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
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 23/11/2011, 14h19   #5
Futur Membre du Club
 
cedric
Inscription : novembre 2008
Messages : 43
Détails du profil
Informations personnelles :
Nom : cedric

Informations forums :
Inscription : novembre 2008
Messages : 43
Points : 17
Points : 17
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...
octane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 14h23   #6
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 861
Points : 1 861
Tu peux aussi utiliser les collections
ZebreLoup est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 19h43   #7
Futur Membre du Club
 
cedric
Inscription : novembre 2008
Messages : 43
Détails du profil
Informations personnelles :
Nom : cedric

Informations forums :
Inscription : novembre 2008
Messages : 43
Points : 17
Points : 17
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 :
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 :
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
octane est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2011, 20h34   #8
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Relis les tutos données par Ormonth.
Une variable tableau doit être dimensionnée.
Code :
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
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 24/11/2011, 18h46   #9
Futur Membre du Club
 
cedric
Inscription : novembre 2008
Messages : 43
Détails du profil
Informations personnelles :
Nom : cedric

Informations forums :
Inscription : novembre 2008
Messages : 43
Points : 17
Points : 17
Effectivement c 'etait ca.
Merci beaucoup ca marche maitnenant
octane est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h35.


 
 
 
 
Partenaires

Hébergement Web