XL 2021 Macro pour export données

konzo

XLDnaute Nouveau
Bonjour à tous,
Sur ma balance je souhaite exporter les données de l’exercice N vers l'exercice N-1.

1) Colonne D vers Colonne L suivant suivant le numéro de compte Colonne C
Exemple : D8 10 000 vers L8 si numéro compte (C8 correspond à K8)

2)
Colonne H vers Colonne P suivant suivant le numéro de compte Colonne G
Exemple : H8 10 000 vers P8 si numéro compte (G8 correspond à O8)
Voir fichier en attaché.
Merci d'avance pour tout appui
 

Pièces jointes

  • Balance Export.xlsx
    312.2 KB · Affichages: 16

crocrocro

XLDnaute Occasionnel
Bonjour,
la formule à mettre en L6 (P6 pour la deuxième et à propager sur la colonne pour toutes les lignes concernées (par collage spécial - Formule)
VB:
=SI(C6=K6;D6;"")
=SI(G6=O6;H6;"")
Si les formules doivent être dynamiques, c'est fini, sinon, s'il s'agit juste d'un report à faire :
sélectionner la plage L6 à Lx (où x est la dernière cellule qui contient la formule)
Copier - Collage Spécial Valeurs.
Puis idem pour P6 à Px
 

crocrocro

XLDnaute Occasionnel
VB:
Sub Report()
' sur la feuille active
Dim i As Integer
    'colonnes Débit
    For i = 6 To Range("C" & Rows.Count).End(xlUp).Row
        If (IsNumeric(Range("C" & i))) And (Range("C" & i) <> "") Then
            If Range("C" & i) = Range("K" & i) Then
                Range("L" & i) = Range("D" & i)
            End If
        End If
    Next i
    'colonnes Crédit
    For i = 6 To Range("G" & Rows.Count).End(xlUp).Row
        If (IsNumeric(Range("G" & i))) And (Range("G" & i) <> "") Then
            If Range("G" & i) = Range("O" & i) Then
                Range("P" & i) = Range("H" & i)
            End If
        End If
    Next i
End Sub
 

konzo

XLDnaute Nouveau
Crocrocro,
J'ai fait les tests et cela fonctionne. Encore mille merci.
Toutefois, si les numéros de compte ne sont pas sur la même ligne, l'export ne se réalise pas.
Si votre temps le permet, comment faire l'expert en se basant sur le numéro de compte entre les deux années?
Cordialement
 

nat54

XLDnaute Barbatruc
Bonjour à tous,
Sur ma balance je souhaite exporter les données de l’exercice N vers l'exercice N-1.

1) Colonne D vers Colonne L suivant suivant le numéro de compte Colonne C
Exemple : D8 10 000 vers L8 si numéro compte (C8 correspond à K8)

2)
Colonne H vers Colonne P suivant suivant le numéro de compte Colonne G
Exemple : H8 10 000 vers P8 si numéro compte (G8 correspond à O8)
Voir fichier en attaché.
Merci d'avance pour tout appui
Bonjour,

Pourquoi ne pas utiliser une simple rechercheV ?
Exemple en L8 : =RECHERCHEV(K8;$C$8:$D$227;2;FAUX)
 

konzo

XLDnaute Nouveau
Bonjour à Tous,
Suite suggestion NAT54 et pour éviter erreur #N/A, j(ai trouvé la fonction "rechercheX"
=RECHERCHEX(K7;$C$8:$C$24;$D$8:$D$24;0;0;1)
Comment faire une macro avec cette formule pour afficher que les montants exportés d'une année à une autre?
Merci d'avance
 

crocrocro

XLDnaute Occasionnel
Bonjour Konzo et Nat54,
3 remarques concernant la formule
=RECHERCHEV(K8;$C$8:$D$227;2;FAUX)
1- Dans le cas ou la cellule de la colonne D contient une formule (par exemple en D6), on perd la formule dans la cellule H (par exemple en H6 pour GA, H116 pour GC). Le résultat sera juste mais on perd la formule.
C'est pour quoi dans le code de ma macro, j'avais ajouté la condition
If (IsNumeric(Range("C" & i))) And (Range("C" & i) <> "") Then
2- RechercheV recherche la valeur en K8 (dans l'exemple) dans toute la colonne C. Peu importe si la valeur trouvée en C n'est pas en ligne 8. Or ici, la comparaison se fait ligne à ligne.
Imaginons, mais ce n'est probablement pas le cas, que l'on est une ligne de compte avec la même valeur en C10 et C100, en K10 et K100, avec la formule on mettra la valeur de D10 en K10 et en K100.

3- Les formules RECHERCHEX et RECHERCHEV sont là pour éviter d'avoir à coder du VBA. Enfin, il me semble !
 

crocrocro

XLDnaute Occasionnel
Bonjour,

Le VBA va éviter d'afficher les formules. Comme cest une balance comptable, je veux juste les chiffres.
Cela comporte des risques, je m'explique :
Par exemple, en ligne 6 (n° de compte de regroupement GA),
on a en D6 la formule
VB:
=+B8+B12+B17+B21+B28+B39+B54+B60+B72+B74+B80+B83
en L6 (exercice N-1) la formule
Code:
=+J8+J12+J17+J21+J28+J39+J54+J60+J72+J74+J80+J83
Ce sont eux-mêmes (AE, AF ...) des regroupements de n° de comptes élémentaires en C6...)
supposons que les n° de comptes détail ne soient pas les mêmes entre l'exercice n et n-1, dans ce cas, la somme en GA sera fausse en L6.
Mais si la balance est bien faite, je suppose que cela ne doit pas arriver !

voici le code (pour débit seulement, ici) avec la fonction VBA équivalente à RECHERCHEV
VB:
Dim i As Integer
Dim n As Long
    n = Range("C" & Rows.Count).End(xlUp).Row
    'colonnes Débit
    On Error GoTo CompteAbsent
    For i = 6 To Range("C" & Rows.Count).End(xlUp).Row
        If Not (IsEmpty(Range("K" & i))) Then
            Range("L" & i) = Application.WorksheetFunction.VLookup(Range("K" & i), Range("$C$6:$D$" & n), 2, False)
        End If
        GoTo DébitOk
CompteAbsent:
        'pour éviter NA (exemple ligne 399)
        Range("L" & i) = ""
DébitOk:
    Next i
 
Dernière édition:

konzo

XLDnaute Nouveau
Bonjour,
Encore merci pour les observations.
Le regroupement des comptes se fait à partir des 4 premiers chiffres.
Exemple AE : 2110 - 2181 - 2191
Je peux créer le compte 2111, 2117
Pour l'export des soldes, il faut prendre tous les 6 chiffres du compte. Tout compte qui n'est pas un regroupement (AE) doit être listé comme non importer
 

crocrocro

XLDnaute Occasionnel
Je crois qu'il faut avoir des règles précises à partir desquelles on produit le code correspondant.
Si, comme il est dit ici

1) Colonne D vers Colonne L suivant suivant le numéro de compte Colonne C
Exemple : D8 10 000 vers L8 si numéro compte (C8 correspond à K8)

2)
Colonne H vers Colonne P suivant suivant le numéro de compte Colonne G
Exemple : H8 10 000 vers P8 si numéro compte (G8 correspond à O8)
la comparaison se fait ligne à ligne, le 1er code que j'ai donné est, selon moi, celui à adopter.
Après, à vous de voir précisément ces règles pour éliminer ce qui ne doit pas être recalculé et adapter le code en conséquence.
 

Discussions similaires

Statistiques des forums

Discussions
313 311
Messages
2 097 039
Membres
106 816
dernier inscrit
Garry972