Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 formule Excel pour dupliquer une ligne selon une valeur dans une cellule

Carlot

XLDnaute Nouveau
Bonjour à tous,

Je souhaite voir avec vous si il est possible de dupliquer une ligne vers le haut selon un une cellule.
en effet Sage propose l'intégration analytique mais celui-ci demande que la ligne soit présent 2 fois exemple :
04/01/2021F2101161112000AGOEG239670
04/01/2021F2101161112000AGOEASIEGE236970
04/01/2021F2101161112000AGOEG00
04/01/2021F2101144566000AGOEG00
04/01/2021F2101144566000AGOEG2037,20

ici SIEGE est dupliquer pour le même montant.
le soucis c'est que mon fichier d'origine n'est pas dupliqué, c'est donc une ligne à créer à chaque fois qu'il y a une analytique...

merci de votre aide
 

merinos-BernardEtang

XLDnaute Accro
Mais que tout cela semble compliqué....

J'ai juste mis un query et fait un "unpivot" sur les autres colonnes. S'il y a 3 indications (ici un, deux, trois) il crée 3 lignes.

Tu remplis le tableau test et tu fais un refresh du tableau solution
 

Pièces jointes

  • unpivot data.xlsx
    20.7 KB · Affichages: 12
Dernière édition:

Carlot

XLDnaute Nouveau
Bonjour Soan,

j'ai encore besoin de ton aide si tu à du temps pour moi,
@soan
j'ai deux bases de donnés un qui s'appelle COALA et l'autre DEXT

je souhaite comparer les deux bases, en comparant la colonne D de chaque base.
je souhaite vérifier que les données de DEXT sont bien dans COALA.

si elle est manquante je souhaite le faire apparaitre dans la feuille "resultat. "

Je te remercie grandement pour ton aide.
 

Pièces jointes

  • FICHIER TEST.xlsx
    31.8 KB · Affichages: 2

soan

XLDnaute Barbatruc
Inactif
Bonjour Carlot, le fil,

la feuille "RESULTAT" est vide ; va sur la feuille "DEXT", et fais Ctrl e.

VB:
Option Explicit

Sub Essai()
  If ActiveSheet.Name <> "DEXT" Then Exit Sub
  Dim n&: n = Cells(Rows.Count, 4).End(3).Row: If n = 1 Then Exit Sub
  Dim T, r As Range, ref$, i&, j&: T = [D1].Resize(n): j = 1
  Application.ScreenUpdating = 0
  With Worksheets("RESULTAT")
    .Columns(1).ClearContents 'pour effacer d'éventuels anciens résultats
    For i = 2 To n
      ref = T(i, 1)
      If ref <> T(i - 1, 1) Then
        Set r = Worksheets("COALA").Columns(4).Find(ref, , -4163, 1, 1)
        If r Is Nothing Then
          .Cells(j, 1) = ref: j = j + 1
        End If
      End If
    Next i
    .Select
  End With
End Sub

soan
 

Pièces jointes

  • FICHIER TEST.xlsm
    40.6 KB · Affichages: 2

Carlot

XLDnaute Nouveau

eh bonjour @soan,

Merci c'est exactement ça!!

j'ai une petite demande en plus..
Pour le résultat j'aimerais que toute les ligne manquante soit disponible dans Résultat, exemple pour la 9460596592

j'aimerais avoir:

20/01/2021​
ACFV.J
9460596592​
V.J Distribution Sarl 2210120162850 cb
0​
64​
EReceipt Bank
20/01/2021​
AC
9460596592​
V.J Distribution Sarl 2210120162850 cb
64​
0​
EReceipt Bank


merci soan
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Carlot, le fil,

j'ai pas pu t'répondre plus tôt. (manque de temps)

tu as écrit : « Merci c'est exactement ça!! »

merci pour ton retour !



tu as écrit : « Pour le résultat j'aimerais que toutes les lignes manquantes soient disponibles dans Résultat » ; j'ai compris que pour une ligne de résultat, tu veux qu'elle apparaisse entièrement, et pas seulement la référence piece de la colonne D, donc en fait les infos de toutes les colonnes de cette ligne ; rebelote :​

la feuille "RESULTAT" est vide ; va sur la feuille "DEXT", et fais Ctrl e.

le nouveau code VBA est celui-ci :

VB:
Option Explicit

Sub Essai()
  If ActiveSheet.Name <> "DEXT" Then Exit Sub
  Dim n&: n = Cells(Rows.Count, 4).End(3).Row: If n = 1 Then Exit Sub
  Dim T, r As Range, ref$, i&, j&: T = [A1].Resize(n, 10): j = 1
  Application.ScreenUpdating = 0
  With Worksheets("RESULTAT")
    .Columns("A:J").ClearContents 'pour effacer d'éventuels anciens résultats
    For i = 2 To n
      ref = T(i, 4)
      If ref <> T(i - 1, 4) Then
        Set r = Worksheets("COALA").Columns(4).Find(ref, , -4163, 1, 1)
        If r Is Nothing Then
          With .Cells(j, 1)
            .Value = T(i, 1)         'date
            .Offset(, 1) = T(i, 2)   'journal
            .Offset(, 2) = T(i, 3)   'compte
            .Offset(, 3) = ref       'piece
            .Offset(, 4) = T(i, 5)   'libelle
            .Offset(, 5) = T(i, 6)   'debit
            .Offset(, 6) = T(i, 7)   'credit
            .Offset(, 7) = T(i, 8)   'monnaie
            .Offset(, 8) = T(i, 9)   'originePiece
            .Offset(, 9) = T(i, 10)  'refDocument
          End With
          j = j + 1
        End If
      End If
    Next i
    .Select
  End With
End Sub

soan
 

Pièces jointes

  • FICHIER TEST.xlsm
    41.6 KB · Affichages: 2

Carlot

XLDnaute Nouveau
bonjour @soan ,

merci pour ton fichier le résultat est correct, il me manque une petite chose encore pour la perfection..

je souhaite voir l'écriture comptable entièrement, comme cela:


20/01/2021ACFV.J9460596592V.J Distribution Sarl 2210120162850 cb064EReceipt Bankhttps://rbnk.me/i/7li892KBKgk
20/01/2021AC9460596592V.J Distribution Sarl 2210120162850 cb640EReceipt Bankhttps://rbnk.me/i/7li892KBKgk

Une écriture complète à le même numéro pièce "exemple 9460596592"

je souhaite donc voir toutes les lignes qui ne sont pas dans l'onglet Coala mais présent dans DEXT.

je sais que je suis chiant..
vraiment navré
merci
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Carlot,

ah, ben voilà c'que c'est d'pas montrer dès l'début un exemple du résultat attendu ! au départ, j'avais pensé qu'c'était juste le n° pièce, car tu parlais d'comparer seulement les 2 colonnes D (entre la feuille "DEXT" et la feuille "COALA") ; puis j'ai pensé qu'tu voulais seulement la ligne entière ; et finalement, c'est toute l'écriture comptable ! soit, ton vœu est maint'nant exaucé et réalisé (enfin, j'crois ! ) ; c'est fait dans l'fichier joint ; même manip que précédemment.

soan
 

Pièces jointes

  • FICHIER TEST.xlsm
    41.7 KB · Affichages: 4

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…