La macro ci-dessous me permet de copié C1 de la feuil1 en A1 de la feuil2, toutefois c'est la formule qui remonte et non la valeur que je souhaite, merci d'avance,
Sub Macro1()
Dim dest As Range
With Sheets("Feuil2")
If .Range("A1").Value = "" Then
Set dest = .Range("A1")
Else
Set dest = .Range("A65536").End(xlUp).Offset(1, 0)
End If
End With
Sheets("Feuil1").Range("C1").Copy Destination:=dest
End Sub
Sub Macro1()
With Worksheets("Feuil2")
If IsEmpty(.[A1]) Then
.[A1] = Worksheets("Feuil1").[C1].Value
Else
Exit Sub
End If
End With
End Sub
Et si tu veux copier dans la feuille 2 à la 1ere ligne vide de la colonne A
VB:
Sub Macro1()
Dim Derlig&
Derlig = Worksheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row + 1
Worksheets("Feuil2").Range("A" & Derlig) = Worksheets("Feuil1").[C1].Value
End Sub
Sub Macro1()
Dim lig&
With Worksheets("Feuil2")
If IsEmpty(.[A1]) Then lig = 1 Else _
lig = .Cells(Rows.Count, 1).End(3).Row + 1
.Cells(lig, 1) = [Feuil1!C1]
End With
End Sub
remarque : quand il s'agit d'une seule cellule, c'est inutile de passer par
.Copy ! et donc un éventuel .PasteSpecial serait lui aussi inutile !
Sub Macro1()
With Worksheets("Feuil2")
If IsEmpty(.[A1]) Then
.[A1] = Worksheets("Feuil1").[C1].Value
Else
Exit Sub
End If
End With
End Sub
Et si tu veux copier dans la feuille 2 à la 1ere ligne vide de la colonne A
VB:
Sub Macro1()
Dim Derlig&
Derlig = Worksheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row + 1
Worksheets("Feuil2").Range("A" & Derlig) = Worksheets("Feuil1").[C1].Value
End Sub
Sub Macro1()
With Worksheets("Feuil2")
If IsEmpty(.[A1]) Then
.[A1] = Worksheets("Feuil1").[C1].Value
Else
Exit Sub
End If
End With
End Sub
Et si tu veux copier dans la feuille 2 à la 1ere ligne vide de la colonne A
VB:
Sub Macro1()
Dim Derlig&
Derlig = Worksheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row + 1
Worksheets("Feuil2").Range("A" & Derlig) = Worksheets("Feuil1").[C1].Value
End Sub
C'est top cela fonctionne bien merci, j'en profite, je veux ajouter un autre copié / collé, est-ce comme ci-dessous en ajoutant les deux lignes ou bien peut on simplifier, en tout cas cela fonctionne ainsi,
* sur "Feuil2", note que B9 est vide ; va sur "Feuil3" ; c'est idem : là aussi, B9 est vide.
* va sur "Feuil4" ; fais Ctrl e(ou clique sur la forme ellipse bleue).
attention : tu avais mis ton code VBA dans le module de "Feuil4" ! (dont le CodeName est "Feuil6") ; le code qu'on met dans un module de feuille, c'est normalement des procédures événementielles, ce qui n'est pas le cas ici ; j'ai donc supprimé ton code VBA de cette feuille, et j'ai mis mon code VBA dans Module1 :
VB:
Option Explicit
Private Sub Job(FX$)
Dim lig&
With Worksheets(FX)
lig = .Cells(Rows.Count, 2).End(3).Row + 1
.Cells(lig, 2) = "Mails portail " & [B15]
End With
End Sub
Sub Essai()
If ActiveSheet.Name <> "Feuil4" Then Exit Sub
Job "Feuil2": Job "Feuil3"
MsgBox "B15 a été copié sur Feuil2 et Feuil3.", 64
End Sub
* sur "Feuil2", note que B9 est vide ; va sur "Feuil3" ; c'est idem : là aussi, B9 est vide.
* va sur "Feuil4" ; fais Ctrl e(ou clique sur la forme ellipse bleue).
attention : tu avais mis ton code VBA dans le module de "Feuil4" ! (dont le CodeName est "Feuil6") ; le code qu'on met dans un module de feuille, c'est normalement des procédures événementielles, ce qui n'est pas le cas ici ; j'ai donc supprimé ton code VBA de cette feuille, et j'ai mis mon code VBA dans Module1 :
VB:
Option Explicit
Private Sub Job(FX$)
Dim lig&
With Worksheets(FX)
lig = .Cells(Rows.Count, 2).End(3).Row + 1
.Cells(lig, 2) = "Mails portail " & [B15]
End With
End Sub
Sub Essai()
If ActiveSheet.Name <> "Feuil4" Then Exit Sub
Job "Feuil2": Job "Feuil3"
MsgBox "B15 a été copié sur Feuil2 et Feuil3.", 64
End Sub
Je souhaite faire évoluer mon fichier, à savoir au lieu de copier uniquement B15, j'aimerai copier toutes les valeurs de la colonne B, à partir de B2 dans la feuil2, colonne C à partir de la cellule libre.
* note que B9 est vide ; note que la plage C2:C9 est vide aussi.
* fais Ctrl f ➯ ça a d'abord copié la valeur 276 de la cellule B15 de "Feuil4" en dernière cellule de la colonne B de "Feuil2" ; donc ici en B9 ; puis ça a copié B2:B9 de "Feuil2" sur la même feuille, à partir de C2 ; donc en C2:C9 de "Feuil2".
code VBA de Module2(10 lignes) :
VB:
Option Explicit
Sub Essai2()
If ActiveSheet.Name <> "Feuil2" Then Exit Sub
Dim lig&: Application.ScreenUpdating = 0
lig = Cells(Rows.Count, 2).End(3).Row + 1
Cells(lig, 2) = [Feuil4!B15]: [B2].Resize(lig - 1).Copy
[C2].PasteSpecial -4163: Application.CutCopyMode = 0
[G1].Select
End Sub
au cas où j'ai mal compris ta demande et que tu voulais autre chose : tu dois créer un autre sujet ! car le principe sur ce forum est que 1 sujet = 1 question ! il ne faut pas tout mettre dans le même sujet !
c'est dans ton nouveau sujet que ton nouvel énoncé devra mieux préciser au juste quelle est ta nouvelle demande ! donc en particulier : précise bien à chaque fois quelles sont les feuilles concernées ! aussi bien pour la source(= les données à copier) que pour la destination(= l'emplacement où il faut faire le coller).
Désolé d'avoir poursuivi la discussion c'était lié avec le sujet.
Aussi ce n'est qu'un fichier test (c'est pour cela qu'il est vide) mon fichier professionnel contient les éléments. Ainsi la colonne B de mon fichier professionnel est bien renseignée à partir de la ligne 2 car entête et le contenu change toutes les semaines avec un nombre variable d'une semaine à l'autre (cela peut être une semaine de B2:B34 et la semaine suivante B2:B400) mais toujours à partir de B2. Ces éléments sont à copier en feuil 2 colonne C à partir de C2 si la colonne est vide et sinon à la suite s'il y a déjà des cellules remplies.