Formule Décaler d'une ligne ligne vers le bas
Bonsoir,
Je dispose de deux classeurs.
Des données (NOM, PRENOM, TEL, MAIL / respectivement en B9, C9, B10, B11) sont rentrées manuellement dans le classeur 1, puis copiées à l'aide d'un bouton "COPIER" dans le classeur 2 (respectivement dans les cellules B9, C9, D9, E9).
Un deuxième bouton "EFFACER" me permet d'effacer les données saisies manuellement (NOM PRENOM TEL MAIL) du classeur 1, et restent ainsi inscrites dans les cellules B9, C9, D9, E9 de mon classeur 2.
Je souhaiterais trouver le moyen pour que, si B9, C9, D9, E9 soient déjà remplies, alors le "collage" effectué par le bouton COLLER se décale à la première ligne vide suivante ( toujours en respectant les colonnes B C D E).
Merci d'avance pour votre aide.
Salut Jero,
voici un exemple
Sub test()
Dim ws As Worksheet
Dim DerLigne As Long
Set ws = Sheets("Non_Feuille") ' ici il faut changer Non_Feuille avec le nom du classeur 2
DerLigne = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row + 1 ' retrouver la première ligne non vide de la colonne B du classeur 2
'ici le bouton "COPIER" va coller les données en utilisant Lastrow comme index
Sheets("Feuil1").Range("B" & i & ":E" & i).Copy ws.Range("B" & LastRow) ' par exemple
End Sub
Sinon il nous faut ton code
Bonne nuit
Salut Jero,
voici un exemple
Sub test() Dim ws As Worksheet Dim DerLigne As Long Set ws = Sheets("Non_Feuille") ' ici il faut changer Non_Feuille avec le nom du classeur 2 DerLigne = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row + 1 ' retrouver la première ligne non vide de la colonne B du classeur 2 'ici le bouton "COPIER" va coller les données en utilisant Lastrow comme index Sheets("Feuil1").Range("B" & i & ":E" & i).Copy ws.Range("B" & LastRow) ' par exemple End Sub
Sinon il nous faut ton code
Bonne nuit
Bonsoir, et merci pour cette réponse rapide.
Effectivement, étant totalement novice et nul en la matière, je pense que le mieux est que je mette les deux classeurs en PJ....
Du coup, le classeur 1 est "Fiche de presta vierge" et le classeur 2 "Fiche client jerhome".
Bonjour,
Bon je sèche toujours pour arriver a faire décaler d'une ligne vers le bas....
Voici la macro de mon bouton copier:
Sub BoutonCopier()
'
' BoutonCopier Macro
'
'
Range("B9").Select
Selection.Copy
Windows("FICHIER CLIENTS JER'HOME.xlsm").Activate
Range("B9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("FICHE DE PRESTA VIERGE.xlsm").Activate
Range("C9").Select
Application.CutCopyMode = False
Selection.Copy
Windows("FICHIER CLIENTS JER'HOME.xlsm").Activate
Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("FICHE DE PRESTA VIERGE.xlsm").Activate
Range("B10:C10").Select
Application.CutCopyMode = False
Selection.Copy
Windows("FICHIER CLIENTS JER'HOME.xlsm").Activate
Range("D9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("FICHE DE PRESTA VIERGE.xlsm").Activate
Range("B11:C11").Select
Application.CutCopyMode = False
Selection.Copy
Windows("FICHIER CLIENTS JER'HOME.xlsm").Activate
Range("E9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("FICHE DE PRESTA VIERGE.xlsm").Activate
End Sub
Si quelqu’un a une solution afin de dire au bouton copier d’écrire en dessous de la dernière ligne remplie.
Merci.
Salut Jero,
à tester
Sub BoutonCopier()
Dim wsCopy, wsDest As Worksheet
Dim DerLigne, w As Long
Dim sw As Boolean
' verifier si le fichier "FICHIER CLIENTS JER'HOME.xlsm" est déjà ouvert sinon il faut l'ouvrir
For w = 1 To Workbooks.Count
If Workbooks(w).Name = "FICHIER CLIENTS JER'HOME.xlsm" Then
sw = True 'Si fichier déjà ouvert
Exit For
End If
Next w
If sw = False Then ' sinon ouvrir le fichier
Workbooks.Open ("C:\Users\....\.....\......\FICHIER CLIENTS JER'HOME.xlsm") '!!!!il faut adapter le chemin!!!!
End If
Set wsCopy = Workbooks("FICHE DE PRESTA VIERGE.xlsm").Worksheets("FICHE DE PRESTA VIERGE")
Set wsDest = Workbooks("FICHIER CLIENTS JER'HOME.xlsm").Worksheets("LISTE CLIENTS")
'calculer la première ligne vide dans la colonne B du fichier "FICHIER CLIENTS JER'HOME.xlsm"
DerLigne = wsDest.Cells(wsDest.Rows.Count, "B").End(xlUp).Row + 1
wsDest.Range("B" & DerLigne) = wsCopy.Range("B9")
wsDest.Range("C" & DerLigne) = wsCopy.Range("C9")
wsDest.Range("D" & DerLigne) = wsCopy.Range("B10")
wsDest.Range("E" & DerLigne) = wsCopy.Range("B11")
End Sub
Bonne journée
Bonjour m3ellem1,
Alors premièrement un énorme merci pour la rapidité des réponses!!!!!
Et un encore plus énorme merci pour la qualité des réponses!!!!!
Je viens de tester et tout fonctionne à merveille.
La ligne se décale bien, et le classeur s'ouvre automatiquement s'il est fermé lors de la copie.
Encore merci merci et merci, ça m’enlève une énorme épine du pied =)
Bonne journée et bon weekend
Mais abec plaisir Jero
bonjour Jero,
as tu eu la réponse à ta demande?
Est ce que la macro suivante convient?
Sub BoutonCopier()
'
' BoutonCopier Macro
'
'Dim lig As Long
Dim ws As Worksheet
Range("B9").Select
Selection.Copy
Windows("copie de FICHIER CLIENTS JER'HOME.xlsm").Activate
Worksheets("Liste Clients").Activate
Lig = 1 'première ligne à vérifier
Do While Not IsEmpty(Range("B" & Lig))
Lig = Range("B1048576").End(xlUp).Row
Lig = Lig + 1
Loop
Range("B" & Lig).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("copie de FICHE DE PRESTA VIERGE.xlsm").Activate
Range("C9").Select
Application.CutCopyMode = False
Selection.Copy
Windows("copie de FICHIER CLIENTS JER'HOME.xlsm").Activate
Range("C" & Lig).Select
'Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("copie de FICHE DE PRESTA VIERGE.xlsm").Activate
Range("B10:C10").Select
Application.CutCopyMode = False
Selection.Copy
Windows("copie de FICHIER CLIENTS JER'HOME.xlsm").Activate
Range("D" & Lig).Select
'Range("D9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("copie de FICHE DE PRESTA VIERGE.xlsm").Activate
Range("B11:C11").Select
Application.CutCopyMode = False
Selection.Copy
Windows("copie de FICHIER CLIENTS JER'HOME.xlsm").Activate
Range("E" & Lig).Select
'Range("E9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("copie de FICHE DE PRESTA VIERGE.xlsm").Activate
Ligne = Lig + 1
Application.CutCopyMode = False
End Sub
bonjour Jero,
as tu eu la réponse à ta demande?
Est ce que la macro suivante convient?
Sub BoutonCopier()
'
' BoutonCopier Macro
'
'Dim lig As Long
Dim ws As Worksheet
Range("B9").Select
Selection.Copy
Windows("copie de FICHIER CLIENTS JER'HOME.xlsm").Activate
Worksheets("Liste Clients").Activate
Lig = 1 'première ligne à vérifier
Do While Not IsEmpty(Range("B" & Lig))
Lig = Range("B1048576").End(xlUp).Row
Lig = Lig + 1
Loop
Range("B" & Lig).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("copie de FICHE DE PRESTA VIERGE.xlsm").Activate
Range("C9").Select
Application.CutCopyMode = False
Selection.Copy
Windows("copie de FICHIER CLIENTS JER'HOME.xlsm").Activate
Range("C" & Lig).Select
'Range("C9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("copie de FICHE DE PRESTA VIERGE.xlsm").Activate
Range("B10:C10").Select
Application.CutCopyMode = False
Selection.Copy
Windows("copie de FICHIER CLIENTS JER'HOME.xlsm").Activate
Range("D" & Lig).Select
'Range("D9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("copie de FICHE DE PRESTA VIERGE.xlsm").Activate
Range("B11:C11").Select
Application.CutCopyMode = False
Selection.Copy
Windows("copie de FICHIER CLIENTS JER'HOME.xlsm").Activate
Range("E" & Lig).Select
'Range("E9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("copie de FICHE DE PRESTA VIERGE.xlsm").Activate
Ligne = Lig + 1
Application.CutCopyMode = False
End Sub
Bonsoir, merci mais la réponse donnée par m3ellem1 correspond tout à fait à mon besoin =)
Je passe les sujet en résolu.