Comment indiquer le changement de feuille pour une macro?

Bonjour à tous,

J'aimerais la réponse à un problème qui est probablement "tout con" à résoudre mais sur lequel je bloque depuis un petit moment maintenant, c'est le fait d'indiquer le changement de feuill pour une macro. Je m'explique, j'ai la macro suivante:

Range("C9:E9").Copy Range("C10").End(xlUp).Offset(1, 0) -> qui me sert à copier coller une ligne une ligne en dessous à chaque fois que je clique sur le bouton vba

Elle fonctionne très bien lorsque je clique sur le bouton de commande vba.

Le problème c'est dès que je met le bouton de commande dans une autre feuille que celle où je réalise le copier-coller, ça ne fonctionne plus. J'aimerais donc trouver un moyen de modifier la macro pour que elle fonctionne même lorsque le bouton de commande est dans une autre feuille. Et ça vaut pour toute les autres macros. Je veu connaitre la formule pour indiquer le changement de feuille dans une macro.

Je précise que pour la macro ci-dessus, j'ai tenter de mettre "Whith Feuill" au début et "End With" à la fin mais que ça ne marche pas.

Bonjour,

Je ne suis pas sûr de bien comprendre le sujet (ce n'est pas facile quand on a pas le fichier sous les yeux pour voir et tester).

Je vais quand même tenter de répondre. Je ne comprends pas trop où tu copie, et où tu colles, ce que je sais c'est qu'en général j'évite les copier coller que je trouve pénibles à utiliser en VBA. Ce qui marche bien en général c'est par exemple: Range("C10:E10") = Range("C9:E9"), tu peux assez facilement mettre par exemple: Sheets("Feuille1").Range("C10:E10") = ActiveSheet.Range("C9:E9")

Je rajoute Activesheet pour te permettre de visualiser que c'est fait avec la feuille actuelle mais ça le fait par défaut quand tu ne précises pas la feuille.

La question c'est: pourquoi tu as besoin de copier coller? qu'est ce que tu veux copier coller? des formats? des valeurs? les deux? Est-ce qu'on peut trouver un moyen d'éviter de passer par ça?

Sinon tu peux aussi changer de feuille en faisant: Sheets("Feuille1").Activate

Elle deviendra la feuille active.

Si tu peux nous joindre le fichier pour aider les échanges ce serait super

with Sheets("Feuille1")
.
Range("C9:E9").Copy .Range("C10").End(xlUp).Offset(1, 0)
end with
il faut ajouter un point au début de chaque élément (ils sont rouges et soulignés tous les deux)

Bonjour à nouveau, cela ne fonctionne toujours pas. Je vous joint le fichier afin que puissiez mieux visualiser.

Ducoup, quand je clique sur le bouton de commande "Copier-Coller Successif" dans la feuille "Centre de contrôle", il faut que toutes les cellules remplies de la ligne 9 dans la feuille "Tableau" soient copié et collé une ligne en-dessous. A chaque fois que je clique sur le bouton le contenu doit se coller à nouveau en dessous jusqu'a remplir le tableau.https://forum.excel-pratique.com/post/repondre/173329#

2test.xlsm (181.72 Ko)

La macro associé au bouton se nomme "CCS" et se trouve dans le module 2.

Merci d'avance.

Bonjour, voici un essai:

Sub testCopie()
Dim ligColler As Integer
With Feuil4
    ligColler = .Range("C" & Rows.Count).End(xlUp).Row
    If .Range("C" & ligColler) = "" Then
        ligColler = .Range("C" & ligColler).End(xlUp).Row + 1
    Else
        ligColler = ligColler + 1
    End If
    .Range("C" & ligColler, "E" & ligColler).Value = .Range("C9", "E9").Value
End With
End Sub

J'ai affecté cette macro au bouton.

3test.xlsm (183.00 Ko)

Merci beaucoup pour ton intervention. Maintenant dis-moi, y-a-t-il un moyen pour faire la même chose sur toutes les cellules de cette ligne. Ainsi, si tu reprend le fichier que tu m'as envoyé, au lieu de faire cela pour les colonnes de C à E, est-il possible de le faire de C jusqu'a CE sans effacer les numéros de références?

Bonjour à tous,

Un essai ici : https://forum.excel-pratique.com/s/goto/1075329

5arthur-b.xlsm (195.11 Ko)

Cordialement,

Merci à toi pour cette magnifique macro que tu as réalisé. Cependant il manque un point précis que j'ai oublié de préciser: je veut que ce soit la 1ère ligne du tableau (donc celle qui appartient au numéro de référence 1) qui soit copié à chaque fois.

Ainsi, si je clique sur le bouton, il me copie colle la ligne une ligne en-dessous. Maintenant si je change le contenu de la ligne 1 et que je clique à nouveau sur le bouton, il faut que ce soit le contenu de la ligne 1 qui soit collé en-dessous et non celui de la ligne précédente.

As-tu une solution?

Merci d'avance

Voilà

10test-1.xlsm (182.83 Ko)

Re,

je veut que ce soit la 1ère ligne du tableau (donc celle qui appartient au numéro de référence 1) qui soit copié à chaque fois.

A tester....

Sub CCV()
 Dim dl%, col, i%
  With Sheets("Tableau")

   col = Array(3, 4, 5, 8, 9, 10, 13, 14, 15, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, _
   34, 35, 36, 39, 40, 41, 42, 45, 46, 47, 48, 51, 52, 53, 54, 55, 58, 59, 60, 61, 62, _
   63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83)

      With .ListObjects(1).ListColumns(2).DataBodyRange
       On Error Resume Next
        Set Rng = .SpecialCells(xlCellTypeBlanks)
        On Error GoTo 0
         If Not Rng Is Nothing Then dl = Rng.Row
      End With

    For i = 0 To UBound(col)
     .Cells(dl, col(i)).Value = .Cells(9, col(i)).Value
    Next i
  End With
  MsgBox "Opération effectuée"
End Sub

Cordialement,

Parfait merci beaucoup, je valide vos commentaires

Rechercher des sujets similaires à "comment indiquer changement feuille macro"