Macro Traiter donnée en fonctions mois et charges

ICE_SACCO

XLDnaute Junior
Bonjour,

J'ai une feuille excel ou j'aimerai récupérer des données en fonction du mois et du nom. La feuil1 sont les données et la feuil2 le résultat attendu. Donc pas de ligne si mois vide, 1 ligne si mois avec une donnée et deux lignes avec 2 données dans le mois.

Je ferai passé la macro sur toute la feuille et a court terme d'une feuil a une autre car il y aura plusieurs feuil comme la 1.

Merci d'avance pour votre aide car j'ai du mal à voir sous cette disposition là comment faire.
 

Pièces jointes

  • Exemple.xlsx
    12.5 KB · Affichages: 51

ICE_SACCO

XLDnaute Junior
Merci beaucoup je viens de tester mais je n'arrive pas à le rendre évolutif:

je ne connais pas trop les arguments de la macro mon besoin est de pouvoir :

  • augmenter le nombre de ligne à récupérer ici la valeur est en dure (voir pj)
  • j'aimerai aussi pouvoir rajouter des colonnes devant la colonne A
J'ai fait des tests mais cela bug
 

Pièces jointes

  • Exemple (17).xlsm
    28.8 KB · Affichages: 34

ICE_SACCO

XLDnaute Junior
Bonjour,

MErci pour ce retour, j'ai revu la structure de mon fichier mais la macro actuelle ne s'adapte pas.

Je n'arrive pass à gérer une ligne a chaque fois qu'il y a une valeur dans externe ou interne.

J'ai remis la version cible avec les colonnes la feuil 1 feuille référence et le feuille 2 feuille de réception des données en précisant les colonnes à récuperer.

Merci d'avance pour ton aide
 

Pièces jointes

  • Exemple V2.xlsm
    27.8 KB · Affichages: 31

ICE_SACCO

XLDnaute Junior
oui j ai revu le fichier. les données à traiter sont précisées sur les titres de colonne de la feuille 2 exemple en B de la feuille deux je récupère la colonne 5 de la feuille A.
Interne externe débute colonne BE de la ligne 2 et j'ai corrigé une coquille.

Le tout est de récupérer chaque donnée de la feuille 1 précisé dans la feuille 2 et de générer une ligne différente dès que c'est un externe ou un interne et par mois

J'ai mis un exemple
 

Pièces jointes

  • Exemple V2.xlsm
    28.5 KB · Affichages: 29

ICE_SACCO

XLDnaute Junior
C'est nickel c'est exactement cela que je voulais!!!! Je voulais rajouter une chose qui est de viabiliser le nom de la feuille. Voila j'ai une macro que je me sers pour récupérer des donners dans plusieurs feuilles de mon classeur et les mettre dans une seule et même feuille avec exemple

Worksheets("feuill1").select 'active ma feuille ou doit-être mise les données
For i=7 To Worksheets.count -2 ' part de la 7 ieme feuill et ne prend pas les deux dernières
.....
Next i

L'avantage est de pouvoir rajouter autant de feuille et de ne pas être placé sur la feuille à collecter. La sur la macro je ne vois pas commen t l'adapter ?

Merci d'avance
 

pierrejean

XLDnaute Barbatruc
Re

Code a tester (faute de fichier exemple !!!!!)
Code:
Sub test()
Sheets("Feuil2").Range("A2:N" & Rows.Count).ClearContents
For i = 7 To Worksheets.Count - 2 ' part de la 7 ieme feuill et ne prend pas les deux dernières
Set origine = Sheets(i).Cells.Find("Numéro", LookIn:=xlValues, lookat:=xlWhole)
If Not origine Is Nothing Then
   debligne = origine.Row
   debcol = origine.Column
End If
dercol = Sheets(i).Cells(debligne - 1, Columns.Count).End(xlToLeft).Column + 1
derlin = Sheets(i).Cells(Rows.Count, debcol).End(xlUp).Row
tablo = Sheets(i).Range(Cells(debligne - 1, debcol).Address & ":" & Cells(derlin, dercol).Address)
'MsgBox (Sheets("Feuil1").Range(Cells(debligne, debcol).Address & ":" & Cells(derlin, dercol).Address).Address)

ReDim tabres(1 To 14, 0)
For n = LBound(tablo, 1) + 2 To UBound(tablo, 1)
   For m = 57 To UBound(tablo, 2)
     If tablo(n, m) <> "" Then
         If tablo(1, m) <> "" Then
'         MsgBox (tablo(1, m))
            Ladate = CDate(tablo(1, m))
         Else
            Ladate = CDate(tablo(1, m - 1))
         End If
        tabres(1, UBound(tabres, 2)) = "TOTO"
        tabres(2, UBound(tabres, 2)) = tablo(n, 5)
        tabres(3, UBound(tabres, 2)) = tablo(n, 8)
        tabres(4, UBound(tabres, 2)) = tablo(n, 9)
        tabres(5, UBound(tabres, 2)) = tablo(n, 6)
        tabres(6, UBound(tabres, 2)) = tablo(n, 4)
       If tablo(2, m) = "Externe" Then
           tabres(8, UBound(tabres, 2)) = "EXTERNE"
      Else
           tabres(7, UBound(tabres, 2)) = "INTERNE"
      End If
        tabres(9, UBound(tabres, 2)) = tablo(n, m)
        tabres(12, UBound(tabres, 2)) = Format(Ladate, "m")
        tabres(13, UBound(tabres, 2)) = Format(Ladate, "yyyy")
        tabres(14, UBound(tabres, 2)) = "x"
        ReDim Preserve tabres(1 To 14, UBound(tabres, 2) + 1)
     End If
   Next
Next
derlin = Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("Feuil2").Range("A" & derlin).Resize(UBound(tabres, 2), UBound(tabres, 1)) = Application.Transpose(tabres)
Next
Sheets("Feuil2").Select

End Sub
 

ICE_SACCO

XLDnaute Junior
Bonjour,

J'ai juste un souci lorsqu'il y a des feuilles ou il n'y a pas de valeur à mettre en tabres(9, UBound(tabres, 2)) = tablo(n, m) cela me génère une err. J'ai fait un test en mettant une valeur dans la plage BE et là ça marche.

J'ai donc voulu faire un IF sur tabres(9, UBound(tabres, 2)) mais je n'y arrive pas.
 

Discussions similaires

Statistiques des forums

Discussions
312 193
Messages
2 086 061
Membres
103 110
dernier inscrit
Privé