For Each sh In Worksheets

Fredrennes

XLDnaute Junior
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
 

bqtr

XLDnaute Accro
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
 

Fredrennes

XLDnaute Junior
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.
 

Jacques87

XLDnaute Accro
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


 

bqtr

XLDnaute Accro
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
 

michel_m

XLDnaute Accro
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


 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 067
Membres
104 016
dernier inscrit
Mokson