Report de valeurs dans 2 tableaux

Bonjour,

J'aurais besoin de votre aide sur un petit soucis.

J'ai un tableau contenant des noms dans une première colonne et des dates dans une seconde

Je voudrais faire en sorte de copier les noms pour lesquels la date en colonne2 est "2017" dans un tableau situé à droite du premier et copier les noms pour lesquels la date en colonne2 est "2018" dans un tableau situé encore plus à droite

ça ressemblerait à ça:

excel

Il y a exactement les mêmes tableaux pour les autres mois de l'année situé les uns en dessous des autres et il faudrait que ça fonctionne pour chaque mois.

Pour l'instant, je récupère les données du premiers tableau, mais plusieurs soucis:

  • Exécution très lente lorsque je colle les données dans les autres tableaux
  • Décallage des données (en gros, j'obtiens un truc du genre:)
excel2

mon code actuel:

    Dim nom(200), nomy(200)
    Dim d As Range, e As Range, f As Range
    Dim i As Integer, j As Integer, année As Integer

    i = 0
    année = Year(Date)

    For Each d In Range("B6:B193")
        ligne = d.Row
        colonne = d.Column

        If Year(Cells(ligne, colonne + 1)) = année - 1 Then
            nom(i) = d.Value
            i = i + 1
            j = j + 1
        ElseIf Year(Cells(ligne, colonne + 1)) = année Then
            nomy(j) = d.Value
            j = j + 1
            i = i + 1
        ElseIf Cells(ligne, colonne + 1).Value = "" Then
            i = i + 1
            j = j + 1
        End If
    Next d
    i = 0
    j = 0
    For Each e In Range("K6:K193")
        e.Value = nom(i)
        i = i + 1
    Next e
    For Each f In Range("R6:R193")
        f.Value = nomy(j)
        j = j + 1
    Next f

Merci pour votre aide

Bonjour

Peut-être avec un extrait de fichier représentant ton problème, cela ira peut-être mieux pour que quelqu'un se penche sur ton cas ??

Merci

Bonjour,

Fichier ajouté en pièce jointe.

13excel-test.xlsm (29.53 Ko)

Personne n'a une petite idée?

Bonjour,

Pourquoi autant de tableaux et pas UNE table qui regroupe tout et à partir duquel on peut ensuite faire des sous totaux ou des TCD facilements ?

Tu te compliques la vie là ...

P.

Bonjour,

C'est un visuel sur lequel je dois travailler et pour lequel je ne suis pas libre de modifications (malheureusement)

Bonjour Yu.plop,

Je te propose ce fichier Excel :

7excel-test.xlsm (37.35 Ko)

Ctrl r ➯ travail effectué

Alt F11 pour voir la macro, puis revenir sur Excel

Si besoin, tu peux demander une adaptation.

Merci de me dire si ça te convient.

dhany

Bonjour

j'ais fait 3 mois

a toi de voir

lance la macro Recape

si ca te va tu rajout les mois

Sub Recape()
Application.ScreenUpdating = False
    Voir 5, 16
    Voir 21, 32
    Voir 37, 48
End Sub

Sub Voir(D&, Fin&)
Dim An&, L&, L1&, L2&
An = Year(Now)
L1 = D
L2 = D
    For L = D To Fin
        If Year(Cells(L, 3)) = An - 1 Then
            Cells(L1, 11).Value = Cells(L, 2).Value
            L1 = L1 + 1
        End If
        If Year(Cells(L, 3)) = An Then
            Cells(L2, 18).Value = Cells(L, 2).Value
            L2 = L2 + 1
        End If
    Next
End Sub

A+

Maurice

Bonjour dhany et bonjour archer,

Tout d'abord, un grand merci pour votre temps.

J'ai essayé la méthode de dhany et c'est exactement ça qu'il me faut (il me reste plus qu'à comprendre comment tu t'y es pris).

Un très grand merci à vous 2

Bonjour Yu.plop,

Tu a écrit :

J'ai essayé la méthode de dhany et c'est exactement ça qu'il me faut

Merci pour ton retour, pour le , et pour avoir passé le sujet en résolu.

NB : Il y avait très peu de données dans le fichier exemple, mais je pense que sur ton vrai fichier, avec des données réelles plus nombreuses, tu as pu voir que le travail est fait pour les 12 mois et pas uniquement pour Janvier.

As-tu remarqué le texte blanc (au lieu de noir) pour les mois ayant une couleur de remplissage foncée ? c'est bien sûr pour que le texte soit plus lisible ➯ meilleur contraste.


Tu a écrit :

il me reste plus qu'à comprendre comment tu t'y es pris

Voici les 2 points les moins évidents de mon programme (exemples pour le tableau Janvier A5:G16) :


1) La plage C5:C16 est pour les dates

a) Year([C5]) = année de 02/05/2017 = 2017 ; 2017 - 2016 = 1 ➯ destination : 1er tableau à droite

b) Year([C6]) = année de 05/03/2017 = 2017 ; 2017 - 2016 = 1 ➯ destination : 1er tableau à droite

c) Year([C7]) = année de 05/05/2018 = 2018 ; 2018 - 2016 = 2 ➯ destination : 2ème tableau à droite

Attention : année d'une cellule vide = 1899 ; vérif facile avec : MsgBox Year([C8])

d) Year([C8]) = année d'une cellule vide = 1899 ; 1899 - 2016 = -117 ➯ test pour éviter de faire le travail :

If .Value <> "" And k >= 0 Then


2) Pour l'instruction : Cells(lg(k), 11 - 7 * (k = 2)) = .Value

La ligne est lg(k) ➯ si k=1 : lg(1) ; si k=2 : lg(2)

Ne pas oublier qu'avec la priorité des opérateur, la multiplication est effectuée en premier, avant la soustraction.

Donc : 11 - 7 * (k = 2) = 11 - (7 * (k = 2))

La colonne est : 11 - 7 * (k = 2)

Si k=1 : (k = 2) est faux et retourne 0 ; 11 - 7 * (k = 2) = 11 - 7 * (0) = 11 - 0 = 11 : colonne K

Si k=2 : (k = 2) est vrai et retourne -1 ; 11 - 7 * (k = 2) = 11 - 7 * (-1) = 11 - (-7) = 11 + 7 = 18 : colonne R


Si t'as un léger mal de tête, désolé : j'ai pas d'aspirine !

dhany

Rechercher des sujets similaires à "report valeurs tableaux"