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 22/11/2011, 19h21   #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 Compteur de lignes non vide dans un range et stockage dans variables

Bonjour,
J'ai un probleme de connaissance
Je voudrais compter le nombre de cellules non vide dans une colonne dans un range de lignes

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

Explication
Colonne A : 4 lignes entre deux trransactions
Colonne B : 2 paquets (xxx) entre les transactions (colonne A)
Colonne C : 3 dates dans le premier paquet et 1 seule dans le deuxieme

Je voudrais savoir combien de cellule non vide j'ai dans le premier paquet de la colonne C compris dans le premier paquet de la colonne B (entre ligne 2 et 4) et combien dans la colonne B compris dans le paquet de la colonne A (donc entre ligne 1 et 5). Le probleme etant que je ne sais pas combien de paquet il y a en colonne B ni combien de ligne il peut y avoir dans la colonne C pour chaque paquet de B. Chacun de ces nombres (nombre de paquet et nombre d'element dans chaque paquet) doit etre stocké dans une variable (la variable pour le nombre de ligne devra donc avoir un indice qui n'est pas connu à l'avance puisque on ne sait pas par avance le nombre de paquets).
J'espere que c'est comprehensible en tout cas je galere depuis pas mal de temps pour faire marcher cela. Quelqu'un aurait une idée?
octane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 19h56   #2
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
Bonsoir
Pas clair comme énoncé, néanmoins pour calculer le nombre de cellules remplies d'une plage (ci-après dans l'exemple C2:C20):
Code :
1
2
3
4
Dim i As Integer
 
i = Application.CountA(Worksheets("Feuil1").Range("C2:C20"))
MsgBox i
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/11/2011, 20h30   #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
au final j'ai reussi par un compteur a compter le nombre d'element. Mon probleme reste d'etre capable de faire des tests sur chacune des cellules d'un meme paquet. En gros dans un meme paquet, je voudrais verifier si les cellules de la 4 eme colonne (qui sont des dates) sont toutes egales entre elles, de meme pour les cellules de la colonne 5.
Voici code que j'ai deja fait pour les compteurs, ensuite il manque le test evoqué (comparaison des cellules d'un meme bloc) pour lequel je n'ai pas d'idée
Le probleme dans ma methode c'est que je ne suis pas capable de stocker le nombre de ligne pour chaque paquet (compteur de date dans le code ci dessous). J'ai besoin de savoir que pour le premier paquet il y a x ligne, le deuxieme y lignes et ainsi de suite sachant que je ne connais pas par avance le nombre de paquets.
Les compteurs servent pour compter les elements expliqués tel que dans mon premier post
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
 
                       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, 1) <> ""
                        iligarb = iligarb + 1
                        Wend
 
                        'compteur nombre de hub en colonne 3
                        paquet3 = 0
                        For ihub = icol + 1 To icol + iligarb
                        If sh2.Cells(ihub, 2) <> "" Then
                            paquet3 = paquet3 + 1
                        Else
                        End If
                        Next ihub
 
                        For i = 1 To ihub
                        ilig2 = 1
                        While sh2.Cells(ilig + 3, 4) <> "" And sh2.Cells(ilig + 3, 3) = ""
                            'ilig2 compteur de date dans un hub Nbre de ligne paquet est ilig2 >1
                            ilig2 = ilig2 + 1
                            ilig = ilig + 1
                        Wend
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 17h26.


 
 
 
 
Partenaires

Hébergement Web