problème sur une boucle for

sebounechouchou

XLDnaute Nouveau
bonjour à tous
j'ai un classeur excel dans lequel j'ai plusieurs feuilles, j'ai crée une boucle pour copier ds données sur chacune des feuilles mais la recopie ne se fait que sur une seule feuille!!
Pouvez vous m'aider
voici la syntaxe :

Private Sub CommandButton1_Click()
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
a = TextBox1
Sheets("tableau maître").Activate
ActiveSheet.Unprotect
b = Cells(12, 12)
i = 12
j = 12
Do While Cells(i, j) <> ""
j = j + 4
Loop
Cells(i, j) = a
Range("l13", "o44").Select
Selection.Copy Destination:=Cells(13, j)
Range(Cells(14, j), Cells(44, j + 4)).Select
Selection.ClearContents
Next WS
TextBox1.Value = ""
UserForm1.Hide
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("tableau maître").Select
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : problème sur une boucle for

Bonjour Seb

Où as tu placé ton code, si tu l'a placé dans le module d'une feuille, il est normal que les instructions s'appliquent à celle-ci. Il est peut être préférable dans ce cas de le mettre dans un module standard.

boone fin d'après midi
@+
 

Pierrot93

XLDnaute Barbatruc
Re : problème sur une boucle for

Re

Aarf, je vois dans ta boucle la ligne de code ci-dessous qui active une feuille :

Code:
Sheets("tableau maître").Activate

donc la copie doit s'effectuer uniquement sur celle ci, remplacer peut être par :

Code:
WS.Activate

A voir, pas facile sans fichier...

@+
 

Pierrot93

XLDnaute Barbatruc
Re : problème sur une boucle for

Bonsoir,

essaye peut être ainsi :

Code:
Private Sub CommandButton1_Click()
Dim Wb As Workbook
Dim Ws As Worksheet
For Each Wb In Application.Workbooks
    For Each Ws In Wb.Worksheets
        With Ws
        a = TextBox1
        b = .Cells(12, 12)
        i = 12
        j = 12
        Do While .Cells(i, j) <> ""
            j = j + 4
        Loop
            .Cells(i, j) = a
            .Range(Cells(i, j), .Cells(i, j + 3)).Merge
            .Range("l13", "o48").Copy Destination:=.Cells(13, j)
            .Range(.Cells(14, j), .Cells(44, j + 3)).ClearContents
        End With
    Next Ws
Next Wb
TextBox1.Value = ""
UserForm1.Hide
End Sub

non testé, pas trop compris pourqoui boucler sur tous les classeurs ouverts... attention si tu as un classeur de macros personnelles...


bonne soirée
@+
 

sebounechouchou

XLDnaute Nouveau
Re : problème sur une boucle for

le test sur les classeurs ouverts est une erreur que je viens de rectifier!!
et cela marche et copie bien sur chaque feuille maintenant pb concernant
.Range(Cells(i, j), .Cells(i, j + 3)).Merge : la méthode range de l'objet worksheet a échoué
 

sebounechouchou

XLDnaute Nouveau
Re : problème sur une boucle for

je m'en sors d'habitude plutôt bien avec vba mais aujourd'hui rien ne fonctionne!!
je cherche à mettre dans une combobox le nom de mes feuilles pour activer le bouton supprimer un salarié mais ça ne marche pas!!!voici le code :
Private Sub ComboBox1_Change()
ComboBox1.Clear
Dim i As Integer
For i = 2 To Worksheets.Count
ComboBox1.AddItem Sheets(i).Name
Next
End Sub

du coup encore besoin de ton aide!!
 

Pierrot93

XLDnaute Barbatruc
Re : problème sur une boucle for

Re,

peut être comme ceci, à placer dans l'événement "Initialize" de l'usf, plutôt que dans l'événement "change" du combo :

Code:
Private Sub UserForm_Initialize()
Dim i As Integer
For i = 2 To Worksheets.Count
ComboBox1.AddItem Sheets(i).Name
Next
End Sub
 

sebounechouchou

XLDnaute Nouveau
Re : problème sur une boucle for

ggggrrrrr
tu avais formidablement bien réussi le problème du copier coller cela fonctionnait et tout d'un coup paf voici un message d'erreur :
"la selection contient plusieurs cellules. la fusion des celulles ne conservera que les données de la cellule supérieure gauche!!"
 

Discussions similaires

Réponses
0
Affichages
154

Statistiques des forums

Discussions
312 273
Messages
2 086 694
Membres
103 372
dernier inscrit
BibiCh