Microsoft 365 changement des données

bd.afaf

XLDnaute Junior
Bonjour Forum 😇

je travail sur 2 feuilles, La première contient un tableau automatique structuré " Tableau des écarts" et la deuxième un tableau automatique que je modifie chaque mois selon les nouveaux données.
les deux tableaux contiennent des formules que j'exécute sous forme de macro,
le problème est lorsque je modifie les données dans du tableau des mois, le premier tableau se modifie automatiquement .

* Je veux pas que mes données changent si je modifie le deuxième tableau.
vous trouverez ci-joint la macro que j'utilise chaque mois.

Merci d'avance
 

Pièces jointes

  • Net.xlsm
    167 KB · Affichages: 9
Dernière édition:

bd.afaf

XLDnaute Junior
Le terme " poubelle" est utilisé que par des personnes vulgaires. Attention à ton langage . et Réponds avec RESPECT !!!! c'est un travail qui m'a couté bq d'efforts!!!!

la macro que j'ai créer est pour qu'au chaque mois, que je modifie les données dans la feuille2 par celle de Février, on va m'exécuter le travail de calcule, copier, coller, filtrer...., dans la feuille1.
sinon comme j'ai expliqué, mon classeur doit contenir 2 feuilles.

Première feuille contient un tableau d'analyse mensuelle de la variation des montants entre janvier, février, mars.... sur lequel je dois avoir les données des nouveaux et anciens mois.

Deuxième feuille je l'utilise pour faire des calcules sur le mois présent ( ex: je fais la remonté des anciens et nouveaux comptes par une formule, je filtre les nouveaux comptes.... ) donc la feuille2 me sera utile ainsi que la macro.

Si tu prends ton temps pour bien voir le tableau tu vas comprendre.
 

job75

XLDnaute Barbatruc
Donc remplacez votre macro par celle-ci :
VB:
Sub Mois_suivant()
Dim tablo, col As Variant, d As Object, i&, x$
tablo = [Tableau6].ListObject.Range 'matrice, plus rapide, sur le tableau structuré de la 2ème feuille
With [Tableau3] 'tableau structuré de la 1ère feuille
    col = Application.Match(tablo(1, 2), .Rows(0), 0)
    If IsError(col) Then MsgBox "Créez la colonne '" & tablo(1, 2) & "' !", 48: Exit Sub
    If Application.CountA(.Columns(col)) Then If MsgBox("La colonne '" & tablo(1, 2) & "' a déjà été remplie faut-il continuer ?", vbYesNo) = vbNo Then Exit Sub
    '---liste des comptes à copier ou créer---
    Set d = CreateObject("Scripting.Dictionary")
    For i = 2 To UBound(tablo)
        x = CStr(tablo(i, 1))
        If x <> "" Then d(x) = tablo(i, 2) 'mémorise la valeur
    Next i
    '---modification du tableau---
    tablo = .Formula 'matrice, plus rapide
    For i = 1 To UBound(tablo)
        x = CStr(tablo(i, 1))
        If d.exists(x) Then
            tablo(i, col) = d(x)
            d.Remove x 'supprime l'item dans la liste
        Else
            tablo(i, col) = ""
        End If
    Next i
    '---restiturion---
    .Formula = tablo 'matrice, plus rapide
    If d.Count = 0 Then Exit Sub
    '---création des nouveaux comptes---
    With .Rows(.Rows.Count + 1).Resize(d.Count)
        .ClearContents
        .Columns(1) = Application.Transpose(d.keys) 'limité à 65536 lignes
        .Columns(col) = Application.Transpose(d.items)
    End With
End With
End Sub
La macro est très rapide car elle utilise des tableaux VBA.

Pour le tableau de la 2ème feuille 2 colonnes suffisent, notez qu'il y a des doublons dans la 1ère colonne, seule la dernière valeur est retenue.
 

Pièces jointes

  • Net(1).xlsm
    27.3 KB · Affichages: 2
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour bd_afaf,
j'ai essayé d'appliquer ton code mais vraiment j'y comprend rien ce que t'as fais
C'est forcément compliqué, si vous n'arrivez pas à comprendre utilisez le fichier tel quel sans rien modifier.
tu as modifier le tableau initial dans la feuille " Les Mois", alors que ce tableau dois rester sur la même forme.
Comme je l'ai dit, dans la 2ème feuille on n'a besoin que de 2 colonnes : celle des comptes et celle des valeurs du mois.

A+
 

bd.afaf

XLDnaute Junior
Bonjour bd_afaf,

C'est forcément compliqué, si vous n'arrivez pas à comprendre utilisez le fichier tel quel sans rien modifier.

Comme je l'ai dit, dans la 2ème feuille on n'a besoin que de 2 colonnes : celle des comptes et celle des valeurs du mois.

A+
je reçois le fichier tel qu'il est dans le classeur que j'ai publié, je dois pas le modifier. en plus j'utilise la feuille pour faire une rechercheV en ajoutant une colonne sur la même feuille ( le calcul n'est pas dans le fichier que j'ai partagé )

si je modifie le tableau dans la feuille 2 , je veux pas que les données coller dans la feuille 1 changent aussi.
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 172
dernier inscrit
Aurelyan