code vba a corriger

J

Jean

Guest
Bonjour à tous

Avec l'aide des gens du forum j'ai règlé un problème que j'avais mais ils y en a encore plusieurs autres ...

Mais un problème à la fois !!!

J'ai encore besoin de votre aide.

Voici ce que je veux faire, copier un range (B5:B1) de la feuille (Jean) du classeur (source.xls) dans un autre classeur (cible.xls) et dans le range (C5:C10) dans toutes les feuilles de celui-ci (PROBLÈME: le nombre de feuille est varaible).

Deuxièmement, est-il possible d'exclure certaines feuilles du classeur cible de la copie ?

Encore une fois merci pour votre aide.

Voici ce que j'avais écrit comme procédure (adapté d'un code écrit par Thierry):

Sub CommandButton2_Click()
Dim WBSource As Workbook
Dim WBCible As Workbook
Dim WSSource As Worksheet
Dim WSCible As Worksheet
Dim WSnameCible As String
Dim ThePlage As Range

Set WBSource = Workbooks("source.xls")
Set WBCible = Workbooks("cible.xls")
Set WSSource = Worksheets("Jean")
Set ThePlage = WSSource.Range("B5:B10")

For Each WSCible In WBCible.Worksheets
If WSCible.Name <> "Jean" Then
WSnameCible = WSCible.Name
On Error GoTo ErrorHandler
WSnameCible = WSCible.Name
With WBCible.Sheets(WSnameCible)
ThePlage.Copy .Range("C5:C10")
End With
End If
Next
Exit Sub

ErrorHandler:
If Err = 9 Then
MsgBox "La Feuille " & WSnameCible & " n'existe pas dans le classeur " & WBCible.Name, vbCritical, "Arrêt Critique Procédure"
Else
MsgBox "Erreur Non Gérée " & Err.Number & " " & Err.Description
End If
End Sub

Merci et bonne journée

Jean
 
J

Jean

Guest
Bonjour à tous

Juste un mot pour vous dire que j'ai réussi à adpater la procédure de Thierry et j'ai résolu mon problème.

Je vous le présente dès fois qu'il pourrait être utilse à quelqu'un d'autre.

Private Sub CommandButton2_Click()

Dim WBSource As Workbook
Dim WBCible As Workbook
Dim WSSource As Worksheet
Dim WSCible As Worksheet
Dim ThePlage As Range
Dim WSnameCible As String

Set WBSource = Workbooks("source.xls")
Set WBCible = Workbooks("cible.xls")
Set WSSource = Worksheets("Jean")
Set ThePlage = Workbooks("source.xls").Worksheets("Jean").Range("B5:B10")

For Each WSCible In WBCible.Worksheets
If WSCible.Name <> "Feuil3" Then
WSnameCible = WSCible.Name
On Error GoTo ErrorHandler
With WBCible.Sheets(WSnameCible)
ThePlage.Copy .Range("C5")
End With
End If
Next
Exit Sub

ErrorHandler:
If Err = 9 Then
MsgBox "La Feuille " & WSnameCible & " n'existe pas dans le classeur " & WBCible.Name, vbCritical, "Arrêt Critique Procédure"
Else
MsgBox "Erreur Non Gérée " & Err.Number & " " & Err.Description
End If

End Sub


Bonne journée


Jean
 

Discussions similaires

Réponses
9
Affichages
253

Statistiques des forums

Discussions
314 136
Messages
2 106 251
Membres
109 547
dernier inscrit
Acilia