For Each sh In Worksheets

  • Initiateur de la discussion Initiateur de la discussion Fredrennes
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

Fredrennes

Guest
Re-bonsoir,

Comment puis-je modifier cette ligne de code pour que cette action ait lieu sur toutes les feuilles sauf 2 feuilles que l'on va nommer A & B ?

Merci
 
Re : For Each sh In Worksheets

bonsoir Fredrennes

La macro de Pascal modifiée pour répondre à ta question.

Sub test()
Dim sh As Worksheet
For Each sh In Worksheets
If sh.Name <> "A" And sh.Name <> "B" Then
sh.Range("D1") = sh.Name
End If
Next
End Sub

A+

P.O
 
Re : For Each sh In Worksheets

Bonsoir & merci,

Ce que je voudrais faire en fait c'est copier la valeur des cellules A2 de toutes les feuilles excepté celle de la feuille B.

Puis copier toutes ces valeurs dans la colonne A de cette feuille B justement.

Merci de votre aide.
 
Re : For Each sh In Worksheets

Bonjour tout le monde
Bonjour Chantal

Je me permets de m'immiser dans ce fil pour répondre à Chantal

Dans ton code il y a 2 choses à éviter :
1) les "Goto", en VBA il vaut mieux ne pas les utiliser contrairement à ce qui se passait avec le Basic des années 85
2) les "select", qui ralentissent l'excécution. Quand on peut les éviter autant le faire, ce n'est pas toujours le cas

donc voici une proposition qui pourrait certainement encore être améliorée :

Sub test()
Dim sh As Worksheet
Dim y As Byte
x = Sheets.Count


For cpt = 1 To x
If Sheets(cpt).Name <> "B" Then
Sheets(cpt).Range("A2").Copy
der = Worksheets("B").Range("A65536").End(xlUp).Row + 1
Worksheets("B").Range("A" & der).Select
ActiveSheet.Paste

End If
Next
End Sub


Bonne journée


 
Re : For Each sh In Worksheets

Bonjour Jacques, le forum

La procédure provoque une erreur si la feuille "B" n'est pas active.
Je l'ai donc modifié et ajouté "Apllication.CutCpoyMode" à la fin.

Sub test()
Dim sh As Worksheet
Dim y As Byte
x = Sheets.Count

For cpt = 1 To x
If Sheets(cpt).Name <> "B" Then
Sheets(cpt).Range("A2").Copy
Worksheets("B").Activate
der = Worksheets("B").Range("A65536").End(xlUp).Row + 1
Worksheets("B").Range("A" & der).Select
ActiveSheet.Paste
Application.CutCopyMode = False


End If
Next
End Sub


N'étant pas expert en VBA, à quoi sert la déclaration de la variable y ?

bonne journée

P.O
 
Re : For Each sh In Worksheets

Bonjour à tous,

petite amélioration du code de Jacques qui évite le copy- select-paste toujours très long

Sub test()
Dim sh as worksheet

x = Sheets.Count
For cpt = 1 To x
If Sheets(cpt).Name <> "B" Then
Sheets(cpt).Range("A2").Copy Worksheets("B").Range("A" & Worksheets("B").Range("A65536").End(xlUp).Row + 1)
End If
Next
End Sub


 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
326
Retour