IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro report de donnée et incrémentation [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    Apprentie ingénieure
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Apprentie ingénieure
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut Macro report de donnée et incrémentation
    Bonjour,

    J'ai 2 feuilles,
    FeDo et FeT, que j'ai défini dans mon code,

    Dans FeT, j'ai un tableau en B10:K29,

    J'aimerai reporter des valeurs dans ce tableau à partir des colonnes T,U,V de FeDo,

    En faite,

    Si en T de FeDo, j'ai un chiffre supérieur à 0, alors j'inscris en B11 de FeT, la valeur de la cellule A qui se trouve sur la même ligne que le chiffre supérieur à 0.
    Pareil pour U mais cette fois en F11 et V en I11,

    Le problème c'est que j'aimerai qu'il passe automatiquement à la ligne si il y a déjà une valeur inscrite sur la FeT



    J'étais partie sur un code avec For Next .. mais je n'arrive à .. rien :/

    J'ai un code qui pourrait m'inspirer mais rien n'en ressort ..


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    a = 2
                                    Do While Cells(a, 2) <> ""
                                    a = a + 1
                                    Loop
     
     
                            i = 2 
                                    Do While FeDo.Cells(i,1) <> "" 
     
                                    If Cells(i, 21) > 0 Then
     
    FeT.Cells(a,2).Value=FeDo.Cells(i,1).Value
     
                                    a = a + 1
     
                                    End If
     
                            i = i + 1
     
            Loop
    Le problème c'est qu'il peut arriver que pdt 5-10 lignes il n'y ait rien d'inscrit dans les colonnes...

    Merci d'avance pour vos réponse et conseils !

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Peux tu fournir un fichier test avec un exemple en fin de traitement

  3. #3
    Membre confirmé
    Femme Profil pro
    Apprentie ingénieure
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Apprentie ingénieure
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut
    Voilà le fichier joint,

    J'ai juste pris les deux feuilles du fichier original et mis un exemple dedans !Et il n'y a pas les macros non plus
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Ok, avec le fichier je comprend mieux.

    Pour ajouter une ligne dans la colonne F
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("F11").Offset(Application.WorksheetFunction.CountA(Range("F11:F29")), 0).Value = "TEST"
    Cela devrait te mettre sur la voie

  5. #5
    Membre confirmé
    Femme Profil pro
    Apprentie ingénieure
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Apprentie ingénieure
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut
    Merci,

    Mais c'est normale que ça s'écrive en F15 le "TEST" uniquement ?

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    oui, c'est normal, il faut faire adapter cette ligne pour les autres colonnes

  7. #7
    Membre confirmé
    Femme Profil pro
    Apprentie ingénieure
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Apprentie ingénieure
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut
    Nan mais, ça commence même pas en F11 c'est ça que je capte pas ...

    Elle dit quoi en faite ta ligne de code ? J'ai jamais utilisé ça ^^'

  8. #8
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Ce code décale de x ligne en partant de la cellule F11 (x correspond au nombre de cellule avec une donnée)
    Si tu as 0 ligne, il insere la donnée en F11 ensuite en F12 etc ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuille Type").Range("F11").Offset(Application.WorksheetFunction.CountA(sheets("Feuille Type").Range("F11:F29")), 0).Value = sheets("Douchette").range("A1").value

  9. #9
    Membre confirmé
    Femme Profil pro
    Apprentie ingénieure
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Apprentie ingénieure
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut
    C'est bizarre ...

    Mais merci je vais essayer de me "dépatouiller" avec ça comme je sui sbloquée dans le F15 quoique je fasse ^^' ..

    Ah,

    Jai réussi à changé un truc, du coup il m'écrit plus uniquement en F15

  10. #10
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Ce bout de code boucle sur les données onglet douchette et insére les infos colonnes A dans la colonne F de l'onglet "Feuille Type" (sur modele fichier communiqué dans précédent post)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub MiseAjour()
     
    Dim i As Long
     
    For i = 2 To Sheets("Douchette").Range("A:A").End(xlDown).Row
     
        Sheets("Feuille Type").Range("F11").Offset(Application.WorksheetFunction.CountA(Sheets("Feuille Type").Range("F11:F29")), 0).Value = Sheets("Douchette").Range("A1").Value
     
    Next i
     
    End Sub
    A toi de travailler les conditions pour transférer les données dans les bonnes colonnes

  11. #11
    Membre confirmé
    Femme Profil pro
    Apprentie ingénieure
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Apprentie ingénieure
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut
    Merci pour le bout de code, je vais tenter avec celui là ! Ca ira certainement mieux que le mien x)

    En faite j'étais partie avec ça moi;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub GRA()
     
    Dim FeDo As Worksheet
    Dim FeT As Worksheet
     
    Set FeT = Sheets("Feuille Type")
    Set FeDo = Sheets("Douchette")
     
     
     
                            i = 2
                                    Do While FeDo.Cells(i, 1) <> ""
     
                                    If FeDo.Cells(i, 21) > 0 Then
     
     
     
    FeT.Range("F11").Offset(Application.WorksheetFunction.CountA(Range("F11:F29")), 0).Value = FeDo.Cells(i, 1).Value
     
    FeT.Range("G11").Offset(Application.WorksheetFunction.CountA(Range("G11:G29")), 0).Value = FeDo.Cells(i, 2).Value
     
    FeT.Range("H11").Offset(Application.WorksheetFunction.CountA(Range("H11:H29")), 0).Value = FeDo.Cells(i, 21).Value
     
     
                                    a = a + 1
     
                                    End If
     
                            i = i + 1
                                    Loop
     
     
     
    End Sub
    Parce que j'ai plusieurs conditions pour reporter les données

  12. #12
    Membre confirmé
    Femme Profil pro
    Apprentie ingénieure
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Apprentie ingénieure
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut
    TADAM :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Sub TableauPalette()
     
    Dim FeDo As Worksheet
    Dim FeT As Worksheet
     
    Set FeT = Sheets("Feuille Type")
    Set FeDo = Sheets("Douchette")
     
     
     
                            i = 2
                                    Do While FeDo.Cells(i, 1) <> ""
     
                                    If FeDo.Cells(i, 21) > 0 Then
     
     
     
    FeT.Range("F11").Offset(Application.WorksheetFunction.CountA(Range("F11:F29")), 0).Value = FeDo.Cells(i, 1).Value
     
    FeT.Range("G11").Offset(Application.WorksheetFunction.CountA(Range("G11:G29")), 0).Value = FeDo.Cells(i, 2).Value
     
    FeT.Range("H11").Offset(Application.WorksheetFunction.CountA(Range("H11:H29")), 0).Value = FeDo.Cells(i, 21).Value
     
                                    End If
     
     
                                    If FeDo.Cells(i, 22) > 0 Then
     
     
     
    FeT.Range("I11").Offset(Application.WorksheetFunction.CountA(Range("I11:I29")), 0).Value = FeDo.Cells(i, 1).Value
     
    FeT.Range("J11").Offset(Application.WorksheetFunction.CountA(Range("J11:J29")), 0).Value = FeDo.Cells(i, 2).Value
     
    FeT.Range("K11").Offset(Application.WorksheetFunction.CountA(Range("K11:K29")), 0).Value = FeDo.Cells(i, 22).Value
     
     
     
                                    End If
     
                                    If FeDo.Cells(i, 20) > 0 Then
     
     
     
    FeT.Range("B11").Offset(Application.WorksheetFunction.CountA(Range("B11:B29")), 0).Value = FeDo.Cells(i, 1).Value
     
     
     
                                    End If
     
                            i = i + 1
     
                                    Loop
     
     
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 67
    Dernier message: 04/07/2015, 09h27
  2. [XL-2003] Macro de synthèse avec report de données
    Par Edaine dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 15/06/2011, 16h57
  3. [VBA-E] Macro Récupération de donnée afin d'en faire un rapport.
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 25/07/2006, 15h37
  4. [VBA]macro Word avec données de MySQL
    Par Taz_8626 dans le forum VBA Word
    Réponses: 3
    Dernier message: 17/07/2006, 11h39
  5. [Crystal Report] sub et main report (récupération données)
    Par ptitsoleil87 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/07/2006, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo