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 :

VBA-Excel:Présentation d'un tableau (insertion ligne de légende)


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut VBA-Excel:Présentation d'un tableau (insertion ligne de légende)
    Bonjour à tous!!!

    Voila mes problèmes:

    *comment faire un tri d'une plage sans prendre en compte la première ligne qui contient la légende (titre, date, montants) et en sachant que cette plage ne doit pas être limitée c'est à dire que la procédure doit marcher jusqu'à la première ligne vide (si je rajoute un autre titre, la procédure doit marche toujours).

    *comment créer une feuille par titres en sachant que pour chaques titres identiques, il ne doit y avoir qu'une seule feuille et que, dans chaque feuilles, on doit avoir les colonnes "dates" et "montant" (en légende) et les valeurs qui y correspondent.

    Je vous remercie tous d'avance.... Répondez moi vite (cause d'examen le 19 juin)

  2. #2
    Membre confirmé Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    Juste un ti truc avant toute chose :

    pour qu'un forum fonctionne bien il est nécessaire de respecter certaine règles que tu trouvera ici :


    d'autre part le dit souvent un de nos cher modérateur, si on pose une question sur le forum c'est que l'on a besoin d'aide... (pas besoin de le signaler dans le titre)

    Je te laisse étudier cela modifier tontitre en consequence et nous t'aiderons sans faute

    [Edit...]
    As tu des notions en programmation ou est-ce que tu n'y connais rien du tout
    si c'est la deuxième option je t'invite à aller jeter un oeil au cour et tutoriel afin que tu comprennes ce que nous te donnons

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    Désolé pour le titre, je ne me suis pas rendue compte

    Pour ta question, je m'y connais un peu est j'ai déjà chercher de partout pour essayer de résoudre mon problème. Y'a quelques truc qui m'ont aider et j'ai pu arranger ma procédure, mais je coince toujours sur les deux points que j'ai expliquer plus haut. C'est donc pour ca que je suis là....

  4. #4
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    Le tri dans Excel est une manipulation si simple qu'il ne convient pas d'en faire une macro sauf s'il doit être préalable à d'autres manipulation...

    Si c'est le cas, tu dois déterminer la plage à trier en trouvant la dernière ligne, la dernière colonne étant généralement connue.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DernièreLigne = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
    Ensuite tu peux faire le tri. Inspires toi d'une macro enregistrée.

    Une fois trié tu peux faire une boucle qui cherche les titres différents, La collonne titres étant connue, sa longueur déterminée par DernièreLigne.

    Commence un peu et dis nous où ça coince.

  5. #5
    Membre confirmé Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    Voici un p'tit bout de code qui permet d'utiliser la fonction Trier d'Excel de la cellule A2 à la dernière (les cellules vides sont automaquement non traitées)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
      Range("A2:A65536").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    End Sub
    Excuse moi j'ai oublier de te mettre lien des règles du forum
    http://www.developpez.net/forums/sho...d.php?t=112760

    bonne continuation

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    merci beraucoup à vous deux....

    En fait, j'ai déjà commencer ma procédure. Comme je vous ai dit, elle marche mais le "hic" est qu'elle trie aussi la première ligne qui contient le titre, la date et le montant.

    Voila ma procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub exercice3()
     
    Dim i As Integer
     
    i = 1
     
    Do Until IsEmpty(Sheets("Feuil3").Cells(i, 1))
        Sheets("Feuil3").Cells(i, 1).Sort key1:=Range("A2"), order1:=xlAscending, key2:=Range("B2"), order2:=xlAscending
        i = i + 1
     
    Loop
    End Sub
    merci encore

  7. #7
    Membre confirmé Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    si ton titre se trouve à la première ligne il suffit de commencer le tri à seconde donc pour cela il te suffit de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    i = 2
    au lieu de 
    i = 1

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut


    J'ai déjà essayer....

  9. #9
    Membre confirmé Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    et si tu utilise le code que je t'ai donné plus avant ca ne fonctionne pas non plus ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    si mais la plage est définie (A2:A65536) et mon problème est que, si je rajoute une ligne ou une colonne n'importe où, la procédure doit quand même marcher.

    J'ai essayer en écrivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim i, j As Integer
     
    i = 2
    j = 1
     
     
    Do Until Sheets("Feuil3").Cells(i, 1) = ""
        Range("A" & i & ":C" & j).Sort key1:=Range("A" & i), order1:=xlAscending, key2:=Range("B" & j), order2:=xlAscending
        i = i + 1
    Loop
    j = j + 1

    mais le résultat est le même: la remière ligne est comprise dans le tri!

    Je suis désespérée!

  11. #11
    Membre confirmé Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    Voila autre chose qui fonctionne seulement elle n'effectue le tri que sur la première colonne et fait suivre toutes les lignes (suis je assez claire)

    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
    Sub test()
    Dim i, j As Integer
     
      i = 2
      j = 2
     
     
      Do Until Sheets("Feuil3").Cells(i, 1) = ""
     
        i = i + 1
      Loop
     
      Range("A2" & ":C" & i).Sort Key1:=Range("A2"), Order1:=xlAscending, _
            Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
     
    End Sub

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    lorsque j'exécute ta procédure, j'ai une erreur pour DataOption1

  13. #13
    Membre confirmé Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    tu utilise quelle version d'Excel car moi je n'ai aucun problème, sinon essaie en supprimant cette partie

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    la procédure marche quand même lorsque j'enlève la partie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    Par contre, lorsqu'il y a deux fois le meme titre en colonne 1, il faut que le tri se fasse sur la colonne 2 (date)...

    Pardon, je n'avais pas vu ta réponse j'utilise excel 2000

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    C'est bon pour le tri, j'ai reussi à trouver comment joindre les deux et.... CA MARCHE!!!!

    Merci beaucoup!!! en fait j'avais oublier de rajouter Header:=xlGuess....


    Par contre j'ai un autre problème sur la suite de ma procédure

    J'arrive à créer une nouvelle feuille par titre et à insérer les dates et les montants correspondant, par contre je n'arrive pas à insérer la légende c'est à dire à mettre en première ligne: "date" et "montant" (suis-je claire??? = )

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    Voila ma procédure défaillante:
    (je dois s'en doute rajouter quelque chose quelque part.... et c'est là que je coince )

    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
    Sub exercicesuite()
     
    Dim a, b As Worksheet
    Dim i, k As Long, nontrouve As Boolean
     
    Set b = Sheets("Feuil3")
     
    i = 2
     
    Do Until b.Cells(i, 1) = ""
        nontrouve = True
        For Each a In Worksheets
            If a.Name = b.Cells(i, 1) Then
            nontrouve = False
        Exit For
            End If
        Next a
        If nontrouve Then
            Set a = Worksheets.Add(after:=Worksheets(Worksheets.Count))
            a.Name = b.Cells(i, 1)
            k = 1
        Else
        k = 2
            Do Until a.Cells(k, 1) = ""
                k = k + 1
            Loop
        End If
        b.Range("B" & i & ":F" & i).Copy Destination:=a.Range("A" & k)
        i = i + 1
    Loop
     
    End Sub
    Faudrait peut être pas oublier de mettre les balises code si tu veux que ton code soit lisible Tu sélectionnes et tu fais un clic sur # (ajoutées par ouskel'n'or)

  17. #17
    Membre confirmé Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    je reviens sur ton message précédent
    en fait tu veux insérer en première ligne un titre à savoir "Date" ou "Montant"
    ou le contenu d'une cellule

    ou bien changer le nom de la feuille que tu ajoute

    j'avoue avoir un peu de mal a te comprendre

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut


    oui... j'avoue que même moi je me mélange les pinceaux

    En fait, je voudrait qu'une fois mes feuilles créées (chacune portant le nom du titre), je puisse également insérer non seulement les valeurs qui y sont liées mais aussi leur légende ("date" et "montant").

    En résumé, sur chaque feuille nouvelle, je dois avoir: "date" et les dates liées au titre de la feuille et "montant" avec les montants liés au titre de feuille....

    Je ne sais pas si j'ai été vraiment plus claire

    ps: merci pour le conseil, c'est tout de suite plus lisible comme ca!!!

  19. #19
    Membre confirmé Avatar de Ania
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    Si je comprends bien

    Dans feuil3 tu as un tableau sous cette forme (ou de même forme)

    DATE MONTANT
    10/06/2006 100,00 €
    20/08/2005 120,00 €
    etc...

    et tu souhaites copié avec des liaisons toutes les dates dans la feuille "Date" et tous les montants dans la feuil "Montant"
    Si l'une de ces 2 feuilles n'existe pas tu la crée.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    MERCI A TOUS!!!

    c'est bon!!! je me suis couché à 3h mais j'ai réussi!!!

    Merci à tous et spécialement à toi Ania

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VBA-Excel]Peut-on insérer des nouvelles lignes au début d'un fichier
    Par Jusomi31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2007, 15h03
  2. [VBA-EXCEL] Graphique à partir de Tableau
    Par mimic50 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/02/2007, 18h12
  3. VBA Excel :séparation dans un tableau croisé dynamique
    Par hiline6 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/11/2006, 08h52
  4. [VBA Excel] Copie d'un tableau lignes filtrées comprises
    Par gojira dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/08/2006, 12h53
  5. [VBA-Excel]Mettre dans un tableau le contenu d'un fichier
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/07/2006, 16h37

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