Compléter un code par un test
Résolu
diabolo5495
Messages postés
112
Date d'inscription
Statut
Membre
Dernière intervention
-
diabolo5495 Messages postés 112 Date d'inscription Statut Membre Dernière intervention -
diabolo5495 Messages postés 112 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Voilà j'avais déjà fait appel à vos services pour un code en VBA. Et de nouveau bloqué, j'ai donc encore besoin de votre aide. Voilà le problème : voici un code que pijaku m'avais bien aider à mettre en place mais je dois y ajouter un test supplémentaire.
Dans ce code, il faudrait que lorsque qu'il trouve la fameuse Personne, il fasse, sur la cellule décalé de deux vers la droite de la ligne où il a trouvé Personne, il fasse un test pour voir si "100" apparait et ainsi mettre le texte qu'il écrit normalement par ce code
Voili Voilou
En espérant avoir été clair, et en vous remerciant d'avance
Bonne journée
Voilà j'avais déjà fait appel à vos services pour un code en VBA. Et de nouveau bloqué, j'ai donc encore besoin de votre aide. Voilà le problème : voici un code que pijaku m'avais bien aider à mettre en place mais je dois y ajouter un test supplémentaire.
Sub Personne() Dim RngCherche As Range Dim mot_chercher As String, firstAddress As String Dim i As Integer i = 2 'le premier mot trouvé sera placé en B2 de la Feuil3 mot_chercher = "*" + "Personne" + "*" Set RngCherche = Sheets("Pilotage").Cells.Find(mot_chercher, lookat:=xlWhole) If Not RngCherche Is Nothing Then firstAddress = RngCherche.Address Sheets("Personne").Range("B" & i) = RngCherche.Offset(0, -2).Value i = i + 1 Do Set RngCherche = Sheets("Pilotage").Cells.FindNext(RngCherche) Sheets("Personne").Range("B" & i) = RngCherche.Offset(0, -2).Value i = i + 1 Loop While Not RngCherche Is Nothing And RngCherche.Address <> firstAddress Else MsgBox "Pas de tâche pour" + mot_chercher End If Set RngCherche = Nothing End Sub
Dans ce code, il faudrait que lorsque qu'il trouve la fameuse Personne, il fasse, sur la cellule décalé de deux vers la droite de la ligne où il a trouvé Personne, il fasse un test pour voir si "100" apparait et ainsi mettre le texte qu'il écrit normalement par ce code
Sheets("Personne").Range("B" & i) = RngCherche.Offset(0, -2).Valueen rouge.
Voili Voilou
En espérant avoir été clair, et en vous remerciant d'avance
Bonne journée
A voir également:
- Compléter un code par un test
- Test performance pc - Guide
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
- Test composant pc - Guide
2 réponses
Bonjour,
Plusieurs choses me gênent dans ce code :
1- dans la variable mot_chercher tu insères une valeur incomplète ("*" blabla "*"). Puis, après dans le code, tu utilises Lookat:=xlwhole. En fait, la propriété lookat de .find te permet de chercher une partie ou le tout.
Donc au lieu de mettre des * et le lookat:=xlwhole, tu peux indiquer :
2- Tu cherches dans toute ta feuille après le mot personne. Puis, tu renvoie une valeur contenue deux colonnes à GAUCHE de l'endroit trouvé (RngCherche.Offset(0, -2).Value). C'est source de plantage si ta macro trouve personne en colonne A ou B...
Sinon, essaye ceci (en gras les modifs) :
Plusieurs choses me gênent dans ce code :
1- dans la variable mot_chercher tu insères une valeur incomplète ("*" blabla "*"). Puis, après dans le code, tu utilises Lookat:=xlwhole. En fait, la propriété lookat de .find te permet de chercher une partie ou le tout.
Donc au lieu de mettre des * et le lookat:=xlwhole, tu peux indiquer :
mot_chercher = "Personne" Set RngCherche = Sheets("Pilotage").Cells.Find(mot_chercher, lookat:=xlPart)
2- Tu cherches dans toute ta feuille après le mot personne. Puis, tu renvoie une valeur contenue deux colonnes à GAUCHE de l'endroit trouvé (RngCherche.Offset(0, -2).Value). C'est source de plantage si ta macro trouve personne en colonne A ou B...
Sinon, essaye ceci (en gras les modifs) :
Sub Personne() Dim RngCherche As Range Dim mot_chercher As String, firstAddress As String Dim i As Integer i = 2 'le premier mot trouvé sera placé en B2 de la Feuil3 mot_chercher = "Personne" Set RngCherche = Sheets("Pilotage").Cells.Find(mot_chercher, lookat:=xlPart) If Not RngCherche Is Nothing Then firstAddress = RngCherche.Address Sheets("Personne").Range("B" & i) = RngCherche.Offset(0, -2).Value If RngCherche.Offset(0, 2) = 100 Then Sheets("Personne").Range("B" & i).Interior.ColorIndex = 3 i = i + 1 Do Set RngCherche = Sheets("Pilotage").Cells.FindNext(RngCherche) Sheets("Personne").Range("B" & i) = RngCherche.Offset(0, -2).Value If RngCherche.Offset(0, 2) = 100 Then Sheets("Personne").Range("B" & i).Interior.ColorIndex = 3 i = i + 1 Loop While Not RngCherche Is Nothing And RngCherche.Address <> firstAddress Else MsgBox "Pas de tâche pour" + mot_chercher End If Set RngCherche = Nothing End Sub
diabolo5495
Messages postés
112
Date d'inscription
Statut
Membre
Dernière intervention
27
Bonjour et merci d'avoir répondu aussi vite. Je viens de tester le code. Le problème est que la cellule à tester le 100 contient en fait un pourcentage, donc écrit "100%". Cette page Pilotage m'ayant était fourni, le signe pourcentage s'affiche automatiquement donc je ne peux pas le supprimer :-S. Donc en fait, il faudrait qu'il teste qu'il y ait "100%" et non "100" ce qui est bien plus embêtant à mettre en place je l'admet. En tout cas merci bien pour les optimisations que tu m'as déjà apporter, il est vrai que c'était un peu du bricolage le code que j'ai présenté mais cela fonctionné quand même :-)
pijaku
Messages postés
12263
Date d'inscription
Statut
Modérateur
Dernière intervention
2 761
Pour le %age, je vais te laisser trouver par toi même...
diabolo5495
Messages postés
112
Date d'inscription
Statut
Membre
Dernière intervention
27
J'ai déjà tester un truc mais ma macro tournait en boucle et a planté Excel ! Donc je sais qu'il faut pas faire ce que je viens de faire ^^ mais je vais trouver ^^
diabolo5495
Messages postés
112
Date d'inscription
Statut
Membre
Dernière intervention
27
Bon j'ai tenté ceci, mais ça ne fonctionne pas (Sidot = Personne)
diabolo5495
Messages postés
112
Date d'inscription
Statut
Membre
Dernière intervention
27
Je me rend compte que j'ai oublié l'offset(0, 2) entre autre mais je ne pense pas que le problème vienne de cela