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.

Rechercher des sujets similaires à "formule decaler ligne bas"