sélection de plages

  • Initiateur de la discussion @xL
  • Date de début
@

@xL

Guest
Bonjour à tous.
Je cherche à appliquer une macro à plusieurs plages de cellules situées sur des feuilles différentes.
J'ai essayé avec le code ci-dessous mais à chaque fois la macro ne s'applique qu'à la sélection de la première feuille sélectionnée.
Quelqu'un aurait il une idée? Merci.

Sub permut_text()
For Each Window In Windows
For Each Worksheet In Window.SelectedSheets
For Each cell In Application.Selection

adr = Worksheet.Name & "!" & cell.Address
Range(adr).Calculate

End If
End If
Next cell
Next Worksheet
Next Window
End Sub
 
Z

Zon

Guest
Salut,

Cela vient de window.selectedsheets as tu préalablement sélectionner les feuilles concernées avant de lancer ton code ?


Testes ceci peut être

Sub permut_text()
dim WB as workbook
dim F as Worksheet

for each wb in workbooks
For Each F in wb.Worksheets
range(F.usedrange).calculate
Next F
Next wb
End Sub


A+++
 
@

@xL

Guest
Salut Zon.

Merci pour ta réponse!
J'ai essayé ta macro mais malheureusement ça n'a pas fonctionné.

J'ai donc testé l'objet "window.selectedsheets" en insérant un espion dans ma macro (feuiltempo = activeSheet.Name). Le but étant de récupérer le nom de la feuille active lorsque j'exécute la macro en mode "pas à pas". Résultat, le changement de feuille se fait bien.

Je pense que le problème vient plutôt de l'objet "application.selection" qui comme tu dois le savoir, contient la plage sélectionnée sur la feuille active.
En fait j'ai remarqué que lorsque le programme change de feuille, il ne change pas pour autant la plage sélectionnée. Autrement dit, le calcul se fait sur la bonne plage lorsque le programme traite la première feuille mais dès qu'il change de feuille les référence des cellules sélectionnées ne changent pas, donc le calcul ne se fait pas au bon endroit de la feuille.

En fait, sans même exécuter de macro, j'ai remarqué que si je sélectionne des plages différentes sur plusieurs feuilles et que je sélectionne tous les onglets avec la touche ctrl, lorsqu'ensuite je retourne sur chacune de ces feuilles, c'est toujours la même plage qui est sélectionnée.

Il doit bien y avoir un moyen de faire cette manipulation qui me parait quand même assez basique sous excel. Mais étant débutant en VBA, je n'ai rien trouvé d'autre.

Voilà. Désolé si j'ai été un peu long mais c'est pour tenter d'être plus clair.
Si quelqu'un connait une solution ...
Merci d'avance!
 
Z

Zon

Guest
Salut,

En fait il faut inviter l'utilisatuer à renseigner les plages , testes cette fontion qui te renvoie un tableau qui stocke les adresses


Function Recup()
Dim Rep As Range
Dim T()
Dim I As Byte
On Error Resume Next
Do
Set Rep = Application.InputBox("Selectionner une plage", , , , , , , 8)
If Err = 0 Then
ReDim Preserve T(I)
T(I) = Rep.Address
I = I + 1
Else: Exit Do
End If
Loop
Recup = T
End Function

sub Princ()
dim T,I&
T=recup
on error resume next
for I=0 to ubound(t)
range(t(i)).calculate
next i
end sub

A+++
 

Discussions similaires

Réponses
2
Affichages
140
Réponses
21
Affichages
326

Statistiques des forums

Discussions
312 371
Messages
2 087 710
Membres
103 648
dernier inscrit
mehdi kaddaf