[Excel]Problème condition
Résolu
Pelur
Messages postés
17
Statut
Membre
-
Pelur Messages postés 17 Statut Membre -
Pelur Messages postés 17 Statut Membre -
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.
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é:
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... ^^'
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:
- [Excel]Problème condition
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
3 réponses
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) 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.
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
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
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
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
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.
@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
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.
Je ne vais pas la reprendre tel quel mais m'en inspirer fortement.
Merci et bonne fin de semaine