Erreur de compilation
Encore bonjour à tous,
J'ai un problème avec la macro suivante:
Sub CopieColle()
Application.ScreenUpdating = False
Dim x As Long, y As Long, z As Long
x = Sheets(13).Range("A" & Rows.Count).End(xlUp).Row
If x > 2 Then
Sheets(13).Rows("2:" & x).Delete
End If
For y = 1 To 12
x = Sheets(y).Range("A" & Rows.Count).End(xlUp).Row
Sheets(y).Range("A2:S" & x).Copy
z = Sheets(13).Range("A" & Rows.Count).End(xlUp).Row
If z < 2 Then
x = Sheets(13).Range("A" & Rows.Count).End(xlUp).Row + 1
Else
x = Sheets(13).Range("A" & Rows.Count).End(xlUp).Row
End If
If y = 1 Then
Sheets(13).Range("A" & x).PasteSpecial
Sheets(13).Range("T" & x & ":T" x + selection.rows.count -1).value = Sheets(y).Name
End If
If y >= 2 Then
Sheets(13).Range("A" & x + 1).PasteSpecial
Sheets(13).Range("T" & x & ":T" x + selection.rows.count -1).value = Sheets(y).Name
End If
Next
End Sub
Le but de cette macro est de compiler sous un seul onglet le contenue de 12 autres onglets. Mais elle doit aussi me remplir la colonne avec en bout de ligne le nom de l'onglet d'où viens la valeur. Et c'est la que ça coince !
la ligne suivante qui devrais remplir la dernière colonne me sort une erreur de compilation "attendu : séparateur de liste ou)" au niveau du "x" :
Sheets(13).Range("T" & x & ":T" x + selection.rows.count -1).value = Sheets(y).Name
Etant toujours débutant, j'avoue ne pas comprendre comment régler ce problème. j'en appel donc à votre aide !
Un grand merci d'avance à ceux qui prendrons le temps de me lire et/ou de me répondre
C'est quoi ça ?
":T" x
il est où le "&" ???
dans
Sheets(13).Range("T" & x & ":T" x + selection.rows.count -1).value = Sheets(y).Name
Je suis vraiment fatigué... Vivement les vacances !
2 heures que je cherche et j'ai juste oublié le "&" de base...
Merci beaucoup Vince mon sauveur une fois de plus !
Bon du coup ça fonctionne mais mal (en même temps c'est moi qui ai codé donc c'est normal)
J'ai la dernière ligne de chaque onglet qui prend le nom de l'onglet suivant et pas de son onglet d'appartenance, et j'ai beau modifié la 2e ligne que ça change rien
Sheets(13).Range("T" & x & ":T" & x + Selection.Rows.Count - 1).Value = Sheets(y).Name
Je ne comprend pas trop ce que tu veux faire
Sheets(13).Range("T" & x & ":T" & x + Selection.Rows.Count - 1).Value = Sheets(y+1).Name
Je te donne ça si par hasard c'est ce que tu souhaites
En même temps vu la qualité de l'explication je comprend pas comment tu as fait pour ne pas comprendre
j'ai bidouillé et j'ai ça :
Sheets(13).Range("T" & x + 1 & ":T" & x + Selection.Rows.Count).Value = Sheets(y).Name
C'est pas beau mais ça fonctionne !
Encore merci beaucoup pour ton aide !
Non ! ça marche pas du tout en fait !
Un problème en cache toujours un autre !
Donc, en fait j'aimerais que la macro cité plus haut fonctionne par Toggle Bouton, elle s'enclenche uniquement quand le bouton est "sortie":
Private Sub ToggleButton1_Click()
Application.ScreenUpdating = False
Dim I&
With Me.ToggleButton1
'Condition et Modification du Bouton
If .Value = True Then 'Si la valeur du bouton est vrai donc "enfoncé"
.Caption = "Masquer": .BackColor = vbRed 'Valeur = Masquer et Couleur = Rouge
Else
.Caption = "Afficher": .BackColor = vbGreen 'Sinon valeur = Afficher et Couleur Verte
Module1.CopieColle
End If
For I = 1 To 13: Sheets(I).Visible = .Value: Next 'S'applique au feuille de 1 à 4 selon la valeur du bouton
End With
End Sub
Problème, tout fonctionne, à l'exception du remplissage de la dernière colonne
Help me plz !
Le fameux fichier