XL 2016 Recopier une formule une cellule sur deux sans saut de ligne dans les données sources

Maria25

XLDnaute Nouveau
Bonjour,

J'ai des données sur une feuille 1, je souhaiterai copier ces données sur une autre feuille mais une ligne sur deux.
En copiant/collant ma formule dans la nouvelle feuille, il y a automatiquement un saut de ligne: on passe de A1 à A3 et ainsi de suite mais j'ai besoin de l'ensemble des lignes.

Merci d'avance
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Maria25 :), bienvevue sur XLD ☺️,

Essayez la formule en A1 de la feuille Feuil2 puis la recopier suffisamment vers le bas :
VB:
=SI(EST.PAIR(LIGNE());"";DECALER(Feuil1!A$1;-1+(1+LIGNE())/2;0))

ou pour ne pas inscrire de zéro quand la cellule de départ est vide (colonne C) :
Code:
=SI(EST.PAIR(LIGNE());"";SI(DECALER(Feuil1!A$1;-1+(1+LIGNE())/2;0)="";"";DECALER(Feuil1!A$1;-1+(1+LIGNE())/2;0)))
 

Pièces jointes

  • Maria25- recopie toutes les 2 lignes- v1.xlsx
    12.8 KB · Affichages: 3

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Par macro. La colonne A de la feuille "Feuil2" se met automatiquement à jour quand on sélectionne la feuille "Feuil2". Le code VBA est dans le module de la feuille "Feuil2" :
VB:
Private Sub Worksheet_Activate()
Dim n&, t, i&
   With Sheets("Feuil1")
      If .FilterMode Then .ShowAllData
      n = .Cells(.Rows.Count, "a").End(xlUp).Row
      t = .Range("a1:a" & n)
   End With
   ReDim r(1 To 2 * n, 1 To 1)
   For i = 1 To UBound(t): r(2 * i - 1, 1) = t(i, 1): Next
   Sheets("Feuil2").Columns(1).Clear
   Sheets("Feuil2").Range("a1").Resize(UBound(r)) = r
End Sub
 

Pièces jointes

  • Maria25- recopie toutes les 2 lignes- v1.xlsm
    16.8 KB · Affichages: 1

Maria25

XLDnaute Nouveau
Bonjour @Maria25 :), bienvevue sur XLD ☺️,

Essayez la formule en A1 de la feuille Feuil2 puis la recopier suffisamment vers le bas :
VB:
=SI(EST.PAIR(LIGNE());"";DECALER(Feuil1!A$1;-1+(1+LIGNE())/2;0))

ou pour ne pas inscrire de zéro quand la cellule de départ est vide (colonne C) :
Code:
=SI(EST.PAIR(LIGNE());"";SI(DECALER(Feuil1!A$1;-1+(1+LIGNE())/2;0)="";"";DECALER(Feuil1!A$1;-1+(1+LIGNE())/2;0)))
Bonjour Mapomme,

Merci beaucoup pour cette réponse, ça semble bien fonctionné.

Je me retrouve maintenant un peu bloqué avec la colonne J dans l'onglet préparation. Je ne peux pas utiliser la formule tel quel car en fonction de si le montant une sortie ou une entrée je dois mettre un moins (mettre un moins pour une sortie), j'avais commencé à faire des onglets intermédiaire, mais existe-t-il un moyen plus simple?

Encore merci
Maria
 

Pièces jointes

  • Journal de caisse 2.xlsx
    22 KB · Affichages: 2

Discussions similaires