VBA : problème dans boucle For

Résolu/Fermé
Toshiii Messages postés 10 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 10 septembre 2012 - Modifié par Toshiii le 25/07/2011 à 22:46
Toshiii Messages postés 10 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 10 septembre 2012 - 22 juil. 2011 à 12:44
Bonjour,

J'ai créé une boucle For inclue dans une autre boucle For. Ces deux boucles me permettent de chercher la valeur d'une cellule dans ddifférents feuillets d'un classeur.
Le problème est lorsque je mets une valeur inexistante, je ne comprends pas pourquoi mais mon code me retourne quand même quelque chose alors que je voudrais mettre "salle inexistante".
Voici mon code (pour plus de clarté) :

'Rechercher la ligne correspondant au nom d'une salle dans une feuille
For x = 1 To 10
Workbooks("Equipements cfo.xls").Worksheets(x).Activate
For i = 458 To 5 Step -1
Cells(i, 2).Select
If Selection.Text = salle Then
Rows(i).Select
Exit For
End If
Next i
Cells(i, 2).Select
If Selection.Text = salle Then
Exit For
End If
Next x

'Extraction des lignes dans un nouveau classeur
plage = "2:2," & i & ":" & i
Range(plage).Select
Selection.Copy
Workbooks("macro.xls").Activate
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True

J'espère que j'ai été claire et que vous pourrez m'aider !

Merci d'avance

4 réponses

bonjour,

que tes boucles trouvent ou non, on passe systématiquement à l'extraction !

rajoute un indicateur et donne lui (par exemple) la valeur "true" si tu trouve . et juste après tes boucles tu testes ton indicateur:

si = true alors extraction
sinon message
(n'oublie pas de mettre ton indicateur à false en début de code )

Bonne suite
1
bonjour,

plusieurs choses:

-en sortie de boucle le booléen est il vrai ?

-salle : est ce une variable ou bien le mot recherché ?
si c'est le mot recherché mettre entre ""
si c'est une variable le contenu est peut-être différent des valeurs recherchées (espace ....)
-.FormulaR1C1 n'est utilisé que pour attribuer des formules , ici il faudrait :
Range("D2").Value = "salle inexistante"


si toujours des problèmes, peux tu déposer ton fichier (sans données confidentielles et au format 2003) sur http://www.cijoint.fr/ et mettre le lien fourni dans un prochain post.

A+
1
Toshiii Messages postés 10 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 10 septembre 2012
22 juil. 2011 à 08:41
Bnjour Paf,

j'ai essayé de faire ce que tu m'as dit :
dans ma boucle for j'ai rajouté un booléen qui se mets à TRUE si ma condition est vérifiée.
je teste cette condition à la fin de ma boucle, mais maintenant ma macro n'affiche plus rien et je ne comprends pas pourquoi !
Voici ce que j'ai fait :

Dim existence As Boolean
existence = False

'Rechercher la ligne correspondant au nom d'une salle dans une feuille
For x = 1 To 10
Workbooks("Equipements cfo.xls").Worksheets(x).Activate
For i = 458 To 5 Step -1
Cells(i, 2).Select
If Selection.Text = salle Then
existence = True
Rows(i).Select
Exit For
End If
Next i
Cells(i, 2).Select
If Selection.Text = salle Then
Exit For
End If
Next x


If existence = True Then

'Extraction des lignes dans un nouveau classeur
plage = "2:2," & i & ":" & i
Range(plage).Select
Selection.Copy
Workbooks("macro.xls").Activate
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Else
Range("D2").Select
ActiveCell.FormulaR1C1 = "salle inexistante"
End If
0
Toshiii Messages postés 10 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 10 septembre 2012
22 juil. 2011 à 12:44
Re bonjour !

Ca marche sans problème !!
J'avais jsute mis le texte dans des mauvaises cases (car mon programme n'est pas fini) ce qui fait que les actions d'après effacaient/annulaient les premières actions !

En tout cas merci beaucoup Paf !!!! :)
0