[Excel]Problème condition

Résolu/Fermé
Pelur Messages postés 17 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 6 septembre 2017 - Modifié le 4 sept. 2017 à 23:02
Pelur Messages postés 17 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 6 septembre 2017 - 6 sept. 2017 à 08:14
Bonjour,

Je réalise actuellement un livret de fête pour l'organisation d'une manifestation.

Afin de m'aider dans la gestion de mes annonceurs j'ai réalisé une macro qui trie mes sponsors et me collecte des informations.

la macro marche plutôt bien sauf dans le cas où un sponsors souhaite prendre différentes offres que nous proposons.

Par exemple un annonceur prend un place dans le livret de fête et veut placer une bâche publicitaire sur la place de fête, les infos seront bien collectées pour le livret de fête mais pas pour la bâche... si je supprime les infos pour le livret de fête il prendra bien les infos de la bâche.

J'ai essayé de trouver une solution un lisant des forums, mais je ne trouve pas ma réponse...

Je ne sais pas si le problème viens de mes If ou de mes InStr

Voici un extrait de mon code que j'ai essayé de commenter au mieux.

If Cells(m, 2).Interior.ColorIndex = Codecouleur Then 'si la cells est colorée il y a un sponsor
            
            If n = 2 Then 'la cells est verte donc c'est un sponsor qui a signé le contrat
        
                vert = vert + 1 'compte le nombre de sponsor avec contrat
                
                sponsor = 1 'pour le sub resum définit sur quelle feuille du classeur on travail
                
                If InStr(1, Cells(m, 6), "1/8") > 0 Then 'cherche dans la cells si le text "1/8" apparaît
                
                    a = a + 1 'compte les 1/8
                    recup = "'1/8" 'récupère le string "'1/8" et le réutilise dans le sub resum
                    resum ' appel le sub resum
                    
                ElseIf InStr(1, Cells(m, 6), "1/4") > 0 Then 'idem mais avec 1/4
                
                    b = b + 1
                    recup = "'1/4"
                    resum
                   
                ElseIf InStr(1, Cells(m, 6), "1/2") > 0 Then 'idem mais avec 1/2
                
                    c = c + 1
                    recup = "'1/2"
                    resum
                    
                ElseIf InStr(1, Cells(m, 6), "1/1") > 0 Then 'idem mais avec 1/1
                
                    d = d + 1
                    recup = "'1/1"
                    resum
                               
                End If 'fin de la recherche pour les tailles d'annonces
                
                sponsor = 2 'pour le sub resum définit sur quelle feuille du classeur on travail
                    
                If InStr(1, Cells(m, 6), "table") > 0 Then ' cherche la mot table
                    
                    stable = stable + 1 'compte les annonce pour les sets de table
                    recup = 1 ' récupère la valeur 1 pour le sub résum
                    resum 'appel le sub resum
                    
                End If 'fin de la recherche
                
                 sponsor = 3 'pour résumé T-shirt
                                  
                If InStr(1, Cells(m, 6), "shirt") > 0 Then
                    
                    shirt = shirt + 1
                    recup = 1
                    resum
                    
                End If
                
                 sponsor = 4 'pour résumé Coupes
                                  
                If InStr(1, Cells(m, 6), "coupe") > 0 Then
                
                    coupe = coupe
                    recup = 1
                    resum
                    
                End If
                                   
                sponsor = 5 'pour résumé bâches
                                  
                If InStr(1, Cells(m, 6), "bâche") > 0 Then
                
                    bache = bache + 1
                    recup = 1
                    resum
                    
                End If
                
                sponsor = 6 'pour résumé formule gros sponsors
                    
                If InStr(1, Cells(m, 6), "formule") > 0 Then
                
                    recup = ""
                    resum
                    
                End If
                                                                   
            ElseIf n = 3 Then ' sponsor jaune (sponsor en attente de réponse)


Peut-être que le sub resum pour vous être utile donc le voici. Désolé pas de commentaire sur ce code, mais le but de ce sub est de sélectionner la feuille sur laquelle on travail et vérifie si le sponsor existe déjà ou si il doit être ajouté à la suite des existants. Ce sub semble bien marché:

Sub resum()

contr = 0
g = 2
gcontrol = 2

Sheets("Copie liste").Select

h = Cells(m, 2)

If sponsor = 1 Then

Sheets("Livret de fête").Select

ElseIf sponsor = 2 Then

Sheets("Sets de tables").Select

ElseIf sponsor = 3 Then

Sheets("T-Shirt").Select

ElseIf sponsor = 4 Then

Sheets("Coupe").Select

ElseIf sponsor = 5 Then

Sheets("Bâches").Select

ElseIf sponsor = 6 Then

Sheets("Formules").Select

ElseIf sponsor = 7 Then

Sheets("Dons").Select

End If


While Cells(g, 2) <> ""

    If Cells(g, 2) = h Then
    
        contr = 1
        gcontrol = g
    End If
    
    g = g + 1
    
Wend

If contr = 0 Then

    Cells(g, 2) = "='Copie liste'!B" & m & ""
    Cells(g, 3) = "='Copie liste'!F" & m & ""
    Cells(g, 4) = recup
    
ElseIf contr = 1 Then
    
    Cells(gcontrol, 2) = "='Copie liste'!B" & m & ""
    Cells(gcontrol, 3) = "='Copie liste'!F" & m & ""
    Cells(g, 4) = recup
    
End If
 
End Sub


J'espère que quelqu'un aura une petite idée sur mon problème.

P.S.
Désolé si mon code vous semble lourd et pas optimisé, mes bases en VBA sont pas extra, l'informatique n'étant pas ma profession j'ai appris sur le tas... ^^'
A voir également:

3 réponses

yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
4 sept. 2017 à 23:09
bonsoir, je pense à deux options:
1) soit tu partages ton fichier,
2) soit (et je pense préférable), tu exécutes ton code en mode pas à pas, et tu vas découvrir à quel moment ton code ne fais pas ce que tu imagines. ensuite, si nécessaire, tu nous expliques ton soucis à propos d'une instruction précise.
1
Pelur Messages postés 17 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 6 septembre 2017
5 sept. 2017 à 10:07
Merci beaucoup yg_be ton commentaire m'a été fort utile.

Grâce à toi j'ai découvert la fonction pas à pas et par conséquent mon problème dans le code.

A la fin de mon sub resum, je ne reprenais pas la selection de ma feuille "copie liste"...

Maintenant que cela est corrigé le code fonctionne très bien.
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > Pelur Messages postés 17 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 6 septembre 2017
5 sept. 2017 à 10:24
parfait, peux-tu alors marquer le sujet comme résolu?
0
fran&ccedil;ois > Pelur Messages postés 17 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 6 septembre 2017
Modifié le 5 sept. 2017 à 12:42
 
@Pelur

Si tu as téléchargé mon fichier, la feuille était vide et il y avait bien un code VBA ;
il te suffisait de faire Alt F11 pour le voir ; c'était une très grosse optimisation
de ton propre code VBA (qui lui est bien trop long pour ce que tu veux faire !).

https://forums.commentcamarche.net/forum/affich-34845165-excel-probleme-condition#2
 
0
Pelur Messages postés 17 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 6 septembre 2017 > fran&ccedil;ois
5 sept. 2017 à 12:43
Je comptais y jetter un oeil ce soir après le boulot.
J'ai juste eu le temps durant ma pause ce matin de tester le mode pas à pas.

Je me rejouis de voir ce que tu me propose.
0
Pelur Messages postés 17 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 6 septembre 2017 > fran&ccedil;ois
6 sept. 2017 à 08:14
Merci pour ta proposition d'optimisation du code.
Je ne vais pas la reprendre tel quel mais m'en inspirer fortement.

Merci et bonne fin de semaine
0
Bonjour Pelur,

Fichier Excel 2007 : https://mon-partage.fr/f/5WeXjv1Q/

Alt F11 pour voir le code VBA, puis revenir sur Excel

Merci de me donner ton avis.

Cordialement
 
0
Pelur Messages postés 17 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 6 septembre 2017
5 sept. 2017 à 07:18
Bonjour,

Si j'ai soumis mon problème de cette façon, c'est que je pensais que mon problème vennait d'une grosse erreur dans le code et que celle-ci sauterait au yeux des plus connaisseur que moi.

Le problème est apparemment plus complexe.

Voa commentaires ne sont cependant pas inutile, j'apprend en effet grâce à vous qu'il existe un mode pas à pas.

Je vais regarder tout ça après le boulot et je vous tiendrais informé.

Merci déjà pour votre temps
0