[RESOLU]Compter le nombre de mot...

Compter le nombre de mot... [RESOLU] - VB/VBA/VBS - Programmation

Marsh Posté le 19-09-2005 à 15:37:42    

Salut à tous,
 
voilà mon problème :
Sous excel
J'ai une colonne d'environ 15000 lignes
Dans chaque cellule il y a soit "entré" soit "stock" j'aimerai savoir comment je peux obtenir le nombre d'"entré" sous VBA ??
 
Merci :)


Message édité par deejoh le 23-09-2005 à 10:55:38
Reply

Marsh Posté le 19-09-2005 à 15:37:42   

Reply

Marsh Posté le 19-09-2005 à 16:07:08    

Par exemple :

Public Sub compter_mots2(mot_a_compter As String)
    Application.ScreenUpdating = False   ' pour aller plus vite
    Set ma_feuille = ThisWorkbook.Sheets("Feuil1" )
    col_no = 1 ' pour la colonne A (A = 1)
    lg_no = 1  ' à partir de la première ligne
    compteur_mots = 0
    Do While Not IsEmpty(ma_feuille.Cells(lg_no, col_no))
        If (ma_feuille.Cells(lg_no, col_no).Value = mot_a_compter) Then
            compteur_mots = compteur_mots + 1
        End If
        lg_no = lg_no + 1
    Loop
    MsgBox ("Il y a " & compteur_mots & " cellule(s) contenant " & mot_a_compter)
End Sub
 
 
Sub compter_mots()
  Call compter_mots2("toto" )
End Sub

:)

Reply

Marsh Posté le 19-09-2005 à 16:34:51    

bonjour,
Pour la colonne A :
 
Sub Test()
MsgBox Application.WorksheetFunction.CountIf(Range("A1:A15000" ), "entré" )
End Sub


---------------
roger
Reply

Marsh Posté le 20-09-2005 à 10:07:29    

Merci pour vos réponses :)
 
J'ai une autre question pour vous.
Aprés avoir obtenu le nombre d'"entrée" il me faut obtenir le nombre associé à cette "entrée" en fonction d'une spécialité...
 
Voici un schéma pour mieux comprendre :
 
A                      B                              C
Entrée/Sortie      Type                        Montant
                                                                                   
Entrée               Entreprise                   920
Stock                Particulier                   10002
Stock                Autre                         1890
Entrée               Specialité                    1500
Entrée               Entreprise                    17899
 
En fait je cherche à obtenir la somme des montants en fonction des entrées/sortie et du type . Par exemple la somme des montants des entrées  
entreprise.
 
Merci :)
 

Reply

Marsh Posté le 20-09-2005 à 11:14:47    

Si ça peut vous aider les colones Types et Entrées sont Filtrées.
Je devrai pouvoir utiliser les filtres sous excel non ?

Reply

Marsh Posté le 20-09-2005 à 11:43:14    

salut deejoh,
Je pense qu'il faudrait également que tu définisse la manière dont tu veux ressortir ces informations car les sollution sont différentes...
 
Soit tu veux un tableau récapitulatif qui se mette à jour , soit tu veux une interrogation ponctuelle sur un point bien précis qui apparaisse dans une msgbox, soit tu as juste besoin qu'excel sache récupérer les valeur pour un autre traitement...
 
Les filtres ne te donneront pas les totaux par type, par contre en base dans excel tu as les sous-totaux si tes collones sont trièes....
 
bon courage

Reply

Marsh Posté le 20-09-2005 à 12:45:38    

Eh bien il me faudrait plutot un tableau récapitulatif...

Reply

Marsh Posté le 20-09-2005 à 13:28:59    

ben déjà ça change pas mal de problèmes :) Et ça te permet d'envisager plusieurs sollutions en fonction de la forme que tu veux obtenir.
 
As-tu essayer les tableaux croisés dynamiques ?
(Dans excel : menu Données\Raport de tableau croisés dynamique)
Tu obtiens comme un onglet supplémentaire avec dessus ton répaitulatif que tu organises à souhait. Tu peux lui faire addition, compter tes données. Pas besoin de programmation, juste mettre en place les champs grâce à l'assistant. Le plus simple est parfois le plus fiable.
 
Dis nous ce que tu en penses après avoir regardé ça.
Si tu veux ce récapitulatif sur la même page, il y a d'autres informations qu'il nous faudra pour t'aider.
 
:)


Message édité par watashi le 20-09-2005 à 13:31:51
Reply

Marsh Posté le 21-09-2005 à 17:21:38    

Bon j'ai trouvé un début de solution à l'aide des filtres automatiques
 
Donc en vba je fais l'instruction pour filtrer Entrée\sortie en fonction de sortie et Type en fonction de Entreprise...
 
Mais j'ai un message d'erreur si je met les 2 filtres...
 
 
Quelqu'un peut m'aider avec les filtres et vba ???

Reply

Marsh Posté le 22-09-2005 à 09:43:22    

Salut Deejoh
 
Si tu nous donne le code que tu as déjà écrit on pourra t'aider à le corriger  
:)
 

Reply

Marsh Posté le 22-09-2005 à 09:43:22   

Reply

Marsh Posté le 22-09-2005 à 09:55:25    

Ok voilà ce que j'ai :
je l'ai fait à l'aide de l'enregistreur de macro... (seulement 1semaine que je suis sur vba... )
 
Public Sub initSortieEntreprise()
 
    Sheets("SORTIES" ).Select
    Rows("2:2" ).Select
    Selection.AutoFilter
    Selection.AutoFilter field:=39, criterial:="SORTIES"
    Selection.AutoFilter field:=35, Criteria1:="ENTREPRISES"
    Range("A46:A65536" ).Select
    Selection.Copy
    Sheets("Temporaire" ).Select
    Range("A1" ).Select
    ActiveSheet.Paste
    Sheets("MVTS MOIS MARCHE" ).Select
    Range("C7" ) = "=SUM(Temporaire!A1:A60078)"
     
 
End Sub
 
Ca fonctionne trés bien si je laisse un seul paramètre de filtre mais si je met les deux ça plante ...


Message édité par deejoh le 22-09-2005 à 09:56:39
Reply

Marsh Posté le 22-09-2005 à 10:08:45    

D'aprés ce que j'ai lu sur un autre forum ça passerai avec ça :
 
Worksheets(13).Cells(1,2).AutoFilter Field:=1,Criteria1:="A"  
 
mais que signifie Autofilter Field:=1 ???

Reply

Marsh Posté le 22-09-2005 à 12:43:52    

re bonjour deejoh
 
pour ton code, je vois un petit problème de syntaxe la :
Selection.AutoFilter field:=39, criterial:="SORTIES"
à remplacer par  

Code :
  1. Selection.AutoFilter field:=39, criteria1:="SORTIES"


Pour éviter les soucis, rajoute ça avant de filtrer :

Code :
  1. 'Mettre en place le filtre s'il n'y en a pas
  2. 'ta ligne d'entête est bien sur la ligne 2 ? sinon modifie le 2 en fonction.
  3.     WorkSheets("SORTIES" ).Rows("2:2" ).Select
  4.     If WorkSheets("SORTIES" ).AutoFilterMode = False Then Selection.AutoFilter
  5. 'Supprime les filtrage précédents
  6.     If WorkSheets("SORTIES" )..AutoFilter.Filters(1).On Then WorkSheets("SORTIES" ).ShowAllData
  7.     Range("A2" ).Select
  8. 'Filter selon tes critères


ça devrait marcher, j'ai plus simple en tête, je te le propose après le repas.
Field : défini le numéro de la colone sur laquelle tu tri. (chez toi à priori en colone 39 tu as tes ENTREES/SORTIES)
@+ Wata
 
P.S.S : si ça ne marche pas dis moi sur quelle ligne ça bloque et quel est le message d'erreur :)


Message édité par watashi le 22-09-2005 à 12:48:12
Reply

Marsh Posté le 22-09-2005 à 14:40:05    

re deejoh,
 
voilà un moyen en VBA de faire ta sommme sur les 2 conditions et de mettre le total dans ta cellule C7.

Code :
  1. Sub Calcultotaux()
  2. 'Tes Variables
  3. Dim i As Integer, SomVal
  4. Dim S As Worksheet, M As Worksheet
  5. Dim Critere1, Critere2
  6. 'Initialisation des variables
  7. i = 2               'N° de ta ligne de titre
  8. SomVal = 0
  9. Critere1 = "SORTIES"         'Ton critere present en colone 39
  10. Critere2 = "ENTREPRISES"   'Ton critere présent en colone 35
  11. Set S = Worksheets("SORTIES" )     'Ta feille de données
  12. Set M = Worksheets("MVTS MOIS MARCHE" )  'Ta feuille de récapitulatif
  13. 'Calculer ta somme et la stocker dans la variable SomVal
  14. S.Select
  15. Do
  16.      i = i + 1
  17.      MsgBox (Cells(i, 39).Text & vbCrLf & (Cells(i, 35).Text))
  18. 'Tes conditions "emoîtées" 
  19.      If Cells(i, 39).Text = Critere1 Then
  20.           If Cells(i, 35).Text = Critere2 Then
  21.                SomVal = SomVal + Cells(i, 1).Value
  22.           End If
  23.      End If
  24. Loop Until Cells(i + 1, 1) = ""
  25. 'Copier ton résultat dans la cellule
  26. M.Select
  27. Range("C7" ).Select
  28. ActiveCell.Formula = SomVal
  29. End Sub


Voilà donnes nous ton avis.


Message édité par watashi le 22-09-2005 à 14:44:16

---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 22-09-2005 à 15:22:58    

MErci beaucoup :)
Je regarde et je t'en parle au plus vite ;)

Reply

Marsh Posté le 23-09-2005 à 10:26:19    

ça marche niquel merci beaucoup :)

Reply

Marsh Posté le 23-09-2005 à 10:40:28    

Cool !  :bounce:  
 
Edites le nom de ton post avec résolu, ça en aidera d'autres ;)
 
bon courage pour la suite :)


Message édité par watashi le 23-09-2005 à 10:44:27

---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed