Problème de IF ...

Résolu/Fermé
simkmil Messages postés 473 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 25 novembre 2024 - 16 oct. 2021 à 19:52
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 - 17 oct. 2021 à 15:23
Bonjour,
je voudrais compter le nombre de répliques par acteur dans le livret d'une pièce de théatre.
Pour cela, j'ai transposé le texte dans Excel et ai basculé les noms des comédiens en colonne A tandis que le texte se trouve en colonne B
je voudrais donc additionner le nombre de "Marie-Thérèse", de "PAPOUNET" qui se trouvent dans cette colonne (3500 lignes !)
j'ai essayé avec NBVAL(), mais j'obtiens un nombre supérieur à 3000 !
alors j'ai tenté en VBA. et ça bloque !
voici ce que j'ai écrit :



Sub repliques()

Dim i As Integer
Dim N As Integer

N = 1

For i = 38 To 3050
If Worksheets("Théatre").Cells(i, A) = "PAPOUNET" Then
N = N + 1
End If

Next



MsgBox N

'Worksheets("Théatre").Cells(3050, A) = N



End Sub
merci de votre aide

3 réponses

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711
Modifié le 17 oct. 2021 à 08:07
Bonjour Whismeril,

Ca flotte?

Y a plus simple que les boucles sur tableaux et c'est Excel qui fait le taf

simkmil:
Sub repliques()
    Dim Plage As Range
    
    With Worksheets("Théatre")
        Set Plage = .Range("A8:A36")
        N = Application.CountIf(Plage, "Marie-Thérèse") + Application.CountIf(Plage, "PAPOUNET")
    End With
    Set Palge = Nothing
    MsgBox N
    
    'Worksheets("Théatre").Cells(3050, A) = N
End Sub
1
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711
Modifié le 17 oct. 2021 à 09:04
Re,

J'oubliai:
Adapter la plage de cellules
0
Utilisateur anonyme
17 oct. 2021 à 09:05
Bonjour f894009

oui ça va et toi?

Comme dans son message, simkmil a écrit
j'ai essayé avec NBVAL(), mais j'obtiens un nombre supérieur à 3000 !
et que VBA c'est pas mon langage de prédilection, je suis resté dans ce qu'il avait codé.


@Simkmil, tu voies c'est quand même, plus clair et agréable à lire avec les balises de code non?
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711 > Utilisateur anonyme
17 oct. 2021 à 15:23
Re,

Pour le moment ca roule.

que VBA c'est pas mon langage de prédilection
Ben moi, se sont les formules qui ont une legere animausite envers moi
0
Utilisateur anonyme
16 oct. 2021 à 21:01
Bonsoir

Il me semble que l’on t’as déjà demandé plusieurs fois de faire l’effort de présenter ton code lisiblement pour le lecteur, rappel ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code le petit tuto qui explique comment faire


Pour ton problème, tu pourrais gagner du temps d’exécution en utilisant un tableau voir ce tuto https://silkyroad.developpez.com/vba/tableaux/

D’autre part tu initialises N à 1, ce qui signifie qu’à la première occurrence, il vaudra 2, à la deuxième il vaudra 3 etc… Ce qui à priori est faux sauf si la cellule A37 contient Papounet.

Ensuite tu vas compter jusqu’à A3050, or dans ton texte tu parles de 3500.

Enfin, tu vas écraser la cellule A3050 pour y écrire le résultat
0
simkmil Messages postés 473 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 25 novembre 2024 35
17 oct. 2021 à 11:06
Bonjour, en effet, c'est bien mieux avec les balises de code; mais à chaque fois, je vais dans <> qui indique Code et je choisis BASIC puisque c'est cela qu'il faut prendre pour le VBA et à part une balise en début, rien ne change. J'ai beau regarder le tuto que vous m'avez envoyé, le suivre au mieux et j'obtiens toujours la même chose. Je dois faire une erreur quelque part.
Ce n'est vraiment pas une mauvaise volonté de ma part.

Hormis cela, ton code fonctionne parfaitement.
Merci beaucoup
0
Utilisateur anonyme
Modifié le 17 oct. 2021 à 12:31
Il faut écrire ou copier coller le code entre la balise ouvrante et la balise fermante

<code basic>
       ton code ici
</ code> attention espace en trop pour que l'affichage se fasse
0