Comptabiliser apparition mot dans colonne

giuggi

XLDnaute Nouveau
Bonjour,

J'ai déjà fait un peu de programmation mais jamais en VBA. J'ai donc la logique mais pas du tout la forme et tout ce que j'essaie ne fonctionne pas comme je le souhaite, pourtant je crois que c'est super simple.

Je souhaiterais compter le nombre de fois qu'apparait un mot dans une colonne. (A savoir le mot apparait dans la cellule mais n'est qu'une partie de la chaine de la cellule.) Et renvoyer cette valeur dans une cellule d'une autre feuille.

Code:
Function NBpoire() As Integer

Dim i As Integer
Dim c As Range
i = 0
For Each c In Columns(4)

Set c = Cells.Find("poire")
If Not c Is Nothing Then i = i + 1

NBpoire = i
End If
Next c

Sheets("Sheet2").Select
Range("A3").Select
NBpoire.Copy

   End Function

Donc je compte sur vos cerveaux d'experts pour me débloquer de cette situation! Merci infiniment pour votre aide!
Bonne journée!
julie:)
 

JCGL

XLDnaute Barbatruc
Re : Comptabiliser apparition mot dans colonne

Bonjour à tous,
Bienvenue sur XLD,

Merci de déposer ton fichier anonymisé pour que nous voyons la structure.
Le code ou la fonction ou la formule sera différente si le terme est placé dans une cellule ou une chaîne.

A + à tous
 

giuggi

XLDnaute Nouveau
Re : Comptabiliser apparition mot dans colonne

Merci de me répondre aussi vite.
A vrai dire j'ai trouvé un code de toute simplicité qui fonctionne et qui me convient. je le poste au cas où d'autres débutants seraient en galère:

Code:
Sub NBPoire()
Dim b As Integer
Dim x As Range
For i = 1 To 3000
Set x = Cells(i, 9).Find("POIRE")
If Not x Is Nothing Then
b = b + 1
Range("RESULTATS!C9").Value = b

End If
Next i
End Sub

Mais j'ai rencontré 2 autres difficultés:
--> comment on utilise "ou" en VBA, mon code marche sauf quand j'ajoute les "OU"

Code:
Sub Famille()
Dim i As Integer
Dim x As Range
For i = 1 To 3000
Set x = Cells(i, 7).Find("POIRE") or .find("POMME") or .find("BANANE")
If Not x Is Nothing Then
qte = qte + Cells(i, 4).Value
Cells(i, 6).Value = "FRUIT"

End If
Next i
End Sub


--> Sinon je souhaiterais compter le nombre de valeurs différentes dans une colonnes, sachant que la colonne est prè-classée: A1=poire/A2=poire/A3=poire/A4=bananne/A4=banane/A5=pomme. ici je veux la valeur 3. Voici mon programme:

Code:
Sub NbrFamille()
Dim b As Integer

Dim i As Integer

b = 1
For i = 1 To 3000

If Not Cells(i, 2).Value <> Cells(i - 1, 2).Value Is Nothing Then b = b + 1
Range("RESULTATS!A1").Value = b

End If
Next i
End Sub

le programme ne s'exécute pas et il est dit qu'il y a un END IF sans IF. Je ne vois pas ce qui est faux dans ma structure.


Par contre je ne peux pas faire passer mon fichier qui est confidentiel. J'espère que vous pouvez tout de même répondre à mes questions.
Encore Merci.

Bonne aprem'
julie
 

JCGL

XLDnaute Barbatruc
Re : Comptabiliser apparition mot dans colonne

Bonjour à tous,

Je n'irais pas plus loin sans fichier...

Pour les questions 1 et 2 , peux-tu essayer :

VB:
Sub Famille()
Dim i As Integer
Dim x As Range
For i = 1 To 3000
Set x = Cells(i, 7).Find("POIRE") Or Cells(i, 7).Find("POMME") Or Cells(i, 7).Find("BANANE")
If Not x Is Nothing Then
qte = qte + Cells(i, 4).Value
Cells(i, 6).Value = "FRUIT"


End If
Next i
End Sub

VB:
Sub NbrFamille()
Dim b As Integer


Dim i As Integer


b = 1
For i = 1 To 3000


If Not Cells(i, 2).Value <> Cells(i - 1, 2).Value Is Nothing Then b = b + 1
Range("RESULTATS!A1").Value = b
Next i
End Sub

A + à tous
 

Misange

XLDnaute Barbatruc
Re : Comptabiliser apparition mot dans colonne

Bonjour
quand un fichier est confidentiel, pour poser la question de façon simple, le mieux c'est de créer un classeur qui reproduise le problème à traiter. JE doute que tu cultives des pommes des poires et des bananes :)
Par ailleurs, pourquoi forcément traiter cela en VBA ? Il y a des fonctions et outils de feuilles qui sont beaucoup plus rapides que le VBA.
 

Discussions similaires

Statistiques des forums

Discussions
312 438
Messages
2 088 410
Membres
103 845
dernier inscrit
anasabir2024