rouday55
Messages postés40Date d'inscriptionjeudi 28 février 2008StatutMembreDernière intervention 8 décembre 2011
-
9 juin 2010 à 00:30
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 2011
-
11 juin 2010 à 13:56
Bonjour à tous,
je travail actuellement sur excel pour la gestion de pièces au sein de l'entreprise pour laquelle je travaille et je me suis initié au vba
Je ne suis qu'un simple débutant mais j'aimerais faire un petit programme
qui me simplifierait la vie c'est pourquoi je demande votre aide
par quoi commencer ?
Alors j'ai un tableau avec la colonne de gauche qui contient le nom des opérateurs et a coté les pieces qu'ils ont faites. En fait je cherche a compter le nombre de chaque piece faite par chaque opérateur et me l'affiche dans le tableau de droite. En fait ca revient en gros a compter les occurrences d'une ligne pour P1 P2 et P3
je pensais d'abord a ecrire une fonction qui prend en parametre une plage de cellules (une ligne) et une chaine de caractere mais JE ne sais pas comment m y prendre avez vous une idée svp
A voir également:
Ecrire un algorithme qui permet de calculer le nombre d'occurrences d'un mot dans une phrase
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 9 juin 2010 à 01:22
Salut,
Exemple de boucles pour compter les occurences.
Soit la liste LST1 qui comprend n éléments (>1).
Soit la liste LST2 qui sert à enregistrer les résultats.
Dim i as Integer, j As Integer,nElements As Integer
Dim nOccurence As Integer
Dim CurrentElt As String
nElements=LST1.ListCount
For i=0 To nElements-2
CurrentElt=LST.List(i)
nOccurence =1
For j=i+1 To nElements-1
If CurrentElt=LST.List(j) Then
nOccurence=nOccurence+1
End If
Next
LST2.AddItem CurrentElt & " : " & nOccurence
Next
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 9 juin 2010 à 05:58
la nuit porte sommeil !
Il faut tester si un élément n' a pas été déjà ajouté.
For i=0 To nElements-2
CurrentElt=LST.List(i)
DéjàAjoue=False
If LST2.ListCount>1 Then
For K=0 To LST2.ListCount-1
If CurrentElt=LST.List(K) Then
DéjàAjoue=True
Exit For
End If
Next
End If
If DéjàAjoue=False Then
nOccurence =1
For j=i+1 To nElements-1
If CurrentElt=LST.List(j) Then
nOccurence=nOccurence+1
End If
Next
LST2.AddItem CurrentElt & " : " & nOccurence
End If
Next
rouday55
Messages postés40Date d'inscriptionjeudi 28 février 2008StatutMembreDernière intervention 8 décembre 2011 9 juin 2010 à 17:35
Merci LIBRE_MAX pour vos réponses :D
En effet "la nuit porte sommeil " :) j'ai trouvé une solution à mon problème elle est bien plus basique et superficielle que la tienne parce que je ne connaissais pas les lignes de code de type ".AddItem" ou bien ".List"
Du coup j'ai crée une fonction qui compte les occurrences et après je l'appelle dans une routine que je n'ai pas finie
Ma fonction est du style
Function calculer(ByVal r1 As Long, ByVal mot As String)
Dim i As Long
Dim cpt As Long
cpt = 0
For i = 4 To 14 'c est la plage de cellules qui m'interesse en réalité
If Cells(r1, i).Value = mot Then
cpt = cpt + 1
End If
Next
calculer = cpt
End Function
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 10 juin 2010 à 01:54
Salut,
C' est vrai que j' ai pas bien expliqué la démarche,mais c' est un peu le même proncipe.
Et c' est ce que j' ai essayé de faire(tant bien que mal) avec des boucles imbriquées.
Ton code consisterait donc à faire 11 appels de la fonction calculer.
Le hic c' est que si par exemple le mot "HIC" se trouve dans les cellules 5,7,10 et 13, tu auras au final:
HIC:4
HIC:4
HIC:4
HIC:4
puisque tu auras cherché 4 fois le même mot.
L' idéal serait donc de vérifier pour chaque mot s' il n' a pas été déjà recherché auparavent.
Il faudra donc gérer les appels :
-en enregistrant chaque résultat(mot:cpt)
-en vérifiant parmi les résultats déjà enregistrés,si un tel mot n'y figure pas déjà, avant d' entamer une recherche.
[] Ce qui va sans dire. va mieux en le disant.
Vous n’avez pas trouvé la réponse que vous recherchez ?