Sélectionner une cellule spéciale d'une page dans une boucle.
Résolu
bloppy_marsupilami
-
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.
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:
- Sélectionner une cellule spéciale d'une page dans une boucle.
- Supprimer une page word - Guide
- Imprimer tableau excel sur une page - Guide
- Aller à la ligne dans une cellule excel - Guide
- Créer une page facebook - Guide
- Comment traduire une page - Guide
1 réponse
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 ?
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 ?
Essayer :
Do
c.Interior.ColorIndex = 37
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
A+
"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
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