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 14/09/2011, 11h29   #1
Membre habitué
 
Homme Michael
Ingénieur qualité méthodes
Inscription : octobre 2010
Messages : 200
Détails du profil
Informations personnelles :
Nom : Homme Michael
Localisation : France, Aisne (Picardie)

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

Informations forums :
Inscription : octobre 2010
Messages : 200
Points : 115
Points : 115
Par défaut comparer valeur d'une variable tableau vba

Bonjour,

j'ai une variable tableau 1d de on va dire 1000 cases
je souhaite rapidement regarder qu'une valeur est la seul ou alors savoir combien de doublon par reference il y a.

genre il y a 233 cases avec la lettre A
ou il y a 1 case avec la lettre B

Comment puis je faire?
redstoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 11h36   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Bonjour,

En utilisant une boucle FOR (dans ce code str est vide)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim str(1000) As String
Dim i As Integer
Dim iCompteur As Integer
 
For i = 0 To UBound(str)
 
    If str(i) = "A" Then
        iCompteur = iCompteur + 1
    End If
 
Next i
 
MsgBox iCompteur
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 11h54   #3
Membre habitué
 
Homme Michael
Ingénieur qualité méthodes
Inscription : octobre 2010
Messages : 200
Détails du profil
Informations personnelles :
Nom : Homme Michael
Localisation : France, Aisne (Picardie)

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

Informations forums :
Inscription : octobre 2010
Messages : 200
Points : 115
Points : 115
l'exemple que j'ai utilisé n'est pas bon

en gros ce que je cherche cest:

il prend la premiere valeur du tableau et compte combien de fois il la retrouve.

ensuite, il prend la seconde valeur et fait pareil

si par exemple la 3e valeur est la meme que la premiere, il zap cette valeur

jespere etre claire^^
redstoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 12h18   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Dans cette exemple on s'appuie sur une feuille pour la synthèse et le comptage

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim str() As String
Dim i As Integer
Dim Ligne As Long
Dim rg As Range
 
 
str() = Split("A,B,B,B,A,A,A,A,C,C,A,B,B", ",")
 
 
For i = 0 To UBound(str)
 
    Set rg = Range("A:A").Find(str(i))
 
    If rg Is Nothing Then
        'Ajout de la référence dans la feuille
        Ligne = Range("A65536").End(xlUp).Row + 1
        Range("A" & Ligne).Value = str(i)
        Range("B" & Ligne).Value = Range("B" & Ligne).Value + 1
    Else
        'Ajout 1 au compteur
        Range("B" & rg.Row).Value = Range("B" & rg.Row).Value + 1
    End If
Next i
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 14h00   #5
Membre habitué
 
Homme Michael
Ingénieur qualité méthodes
Inscription : octobre 2010
Messages : 200
Détails du profil
Informations personnelles :
Nom : Homme Michael
Localisation : France, Aisne (Picardie)

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

Informations forums :
Inscription : octobre 2010
Messages : 200
Points : 115
Points : 115
je viens de lire ta proposition mais je sens que ca ne va pas aller a mon contexte j'ai finit par me faire un petit truc rapide qui donne

Code :
1
2
3
4
5
6
7
8
9
    For l = 1 To UBound(TableauDonnees)
        If TableauDonnees(l, 7) <> Imputation Then GoTo suivant
        For l1 = 1 To l - 1
            If TableauDonnees(l, 10) = TableauDonnees(l1, 10) And TableauDonnees(l, 7) = Imputation Then GoTo suivant
        Next l1
        NombreMoteur = NombreMoteur + 1
suivant:
    Next l
    MsgBox NombreMoteur
ce n'est surement pas optimisé en terme de vitesse mais ca répond à mes attentes
redstoff 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 01h45.


 
 
 
 
Partenaires

Hébergement Web