XL 2016 Macro copié sans la formule

mcj1997

XLDnaute Accro
Bonjour,

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
 
Solution
Bonour à tous les 2

@mcj1997
Je te propose :

VB:
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

Merci de ton retour

@Phil69970

soan

XLDnaute Barbatruc
Inactif
Bonjour mcj1997,

essaye ce code VBA :

VB:
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 !

soan
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Bonour à tous les 2

@mcj1997
Je te propose :

VB:
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

Merci de ton retour

@Phil69970
 
Dernière édition:

mcj1997

XLDnaute Accro
Bonour à tous les 2

@mcj1997
Je te propose :

VB:
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

Merci de ton retour

@Phil69970
Bonjour,

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,


Macro1()
Dim Derlig&
Derlig = Worksheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row + 1
Worksheets("Feuil2").Range("A" & Derlig) = Worksheets("Feuil1").[C1].Value

Derlig = Worksheets("Feuil3").Range("A" & Rows.Count).End(xlUp).Row + 1
Worksheets("Feuil3").Range("A" & Derlig) = Worksheets("Feuil1").[C10].Value


End Sub
 

soan

XLDnaute Barbatruc
Inactif
@mcj1997 (salut Phil)

ton fichier en retour. :)

* 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

soan
 

Pièces jointes

  • macro.xlsm
    26.3 KB · Affichages: 4

mcj1997

XLDnaute Accro
@mcj1997 (salut Phil)

ton fichier en retour. :)

* 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

soan
Bonjour,

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.

Merci d'avance,
 

soan

XLDnaute Barbatruc
Inactif
Bonjour mcj1997,

sur "Feuil2" :

* 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).
soan
 

Pièces jointes

  • Exo mcj1997 - 2.xlsm
    28.1 KB · Affichages: 3

mcj1997

XLDnaute Accro
Bonjour,

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.

Merci d'avance,
 

Discussions similaires

Réponses
6
Affichages
99
Réponses
3
Affichages
173

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG