Sélectionner une cellule spéciale d'une page dans une boucle.

Résolu
bloppy_marsupilami -  
 bloppy_marsupilami -
Bonjour,

J'ai trouvé un code permettant de mettre un texte qu'on aura tapé préalablement dans une cellule en couleur dans toute la feuille excel. Ce code fonctionne mon problème étant que j'aimerai faire en sorte de mettre ce code dans une page excel et qu'une fois que j'aurais lancé la macro ce code s'exécute pour toutes les pages de mon classeur: voici mon code:

Sub Parcourir()

Dim WS_Count As Integer
Dim I As Integer


' Set WS_Count equal to the number of worksheets in the active
' workbook.
WS_Count = ActiveWorkbook.Worksheets.Count

' Begin the loop.
For I = 1 To WS_Count
With Worksheets(I).Range("A1:AE63")
Set c = .Find(What:=Range("37!I5").Value, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows)
If Not c Is Nothing Then
firstAddress = c.Address
MsgBox ActiveWorkbook.Worksheets(I).Name
Do
c.Activate
ActiveCell.Interior.ColorIndex = 37
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
MsgBox ActiveWorkbook.Worksheets(I).Name

Next I
End Sub




Je pense que mon problème vient de la: Set c = .Find(What:=Range("37!I5")


Dans le range il faut que je fasse en sorte de "pointer" vers la cellule I5 de la page 37 (car c'est dans cette cellule que j'écrirai le texte que je veux mettre en couleur), il m'a semblé voir sur internet qu'il fallait écrire: 37!I5 sauf que cela ne fonctionne pas.

Merci d'avance pour votre aide.

A voir également:

1 réponse

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour

Si 37 est le nom de l'onglet
Sheets("37").range("I5")
sinon, Si 37 est le numéro d'ordre, ce qui semble être le cas
Sheets(37).range("I5")

pour éviter d'avoir l'écran qui saute et pour aller + vite (env. 80 fois)
ecris en début de macro:
Application.screenupdating=False
nota: il est inutile de remettre à True en fin de macro

a quoi servent les 2 msgbox ?


0
bloppy_marsupilami
 
Merci pour la réponse, jviens d'essayer les deux façons et ça ne fonctionne toujours pas :( ça me met "la méthode activate de la classe range à échoué". Pour ce qu'il y est des messages box je ne sais pas, j'ai copié le code , je l'ai compris vite fait et j'ai changé certaines valeurs (comme le numéro de cellule) pour qu'il s'adapte à ma page mais j'ai laissé le reste tel quel.
0
pilas31 Messages postés 1825 Date d'inscription   Statut Contributeur Dernière intervention   646
 
Bonjour à tous les deux,

Essayer :
Do
c.Interior.ColorIndex = 37
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress

A+
0
bloppy_marsupilami
 
ca marche!!!! merci bcp!!!
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
d'après ce que tu écris
"la méthode activate de la classe range à échoué"
l'erreur n'est pas dans .find...
mais ici
...Do
c.Activate
ActiveCell.Interior.ColorIndex = 37 ...

essaies comme ceci
...Do
c..Interior.ColorIndex = 37


pour les msgbox, ca te permet de suivre la progression pour les essais; une fois que c'est OK, mets les en commentaire avec le caractère apostrophe en début de ligne....

Pour savoir sur quelle ligne tu as une erreur, dans l'éditeur VBA, clique dans la macro et appuie sur F8, la ligne active est coloriée en jaune encore F8 pour passer à la ligne d'après
0
bloppy_marsupilami
 
merci bien!
0