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] Comparaison d'entête de colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut [VBA EXCEL] Comparaison d'entête de colonne
    Bonjour a tous ,voila je vous presente mon code avant mon petit probleme:


    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
    Sub comparaison()
    Sheets.Add
    Worksheets("Feuil1").Select
    Range("A1").Select
        ActiveCell.FormulaR1C1 = "Intervenant"
        Range("B1").Select
        ActiveCell.FormulaR1C1 = "Type de ligne"
        Range("C1").Select
        ActiveCell.FormulaR1C1 = "Salaire brut mensuel"
        Range("D1").Select
        ActiveCell.FormulaR1C1 = "Nb jours potentiels"
        Range("E1").Select
        ActiveCell.FormulaR1C1 = "Nb jours facturables"
        Range("F1").Select
        ActiveCell.FormulaR1C1 = "Nb jours hors projet"
        Range("G1").Select
        ActiveCell.FormulaR1C1 = "Nb jours d'absences"
        Range("H1").Select
        ActiveCell.FormulaR1C1 = "Coût des notes de frais"
        Range("I1").Select
        ActiveCell.FormulaR1C1 = "Coût direct"
        Range("J1").Select
        ActiveCell.FormulaR1C1 = "TJM"
        Range("K1").Select
        ActiveCell.FormulaR1C1 = "C.A Intervenant"
        Range("L1").Select
        ActiveCell.FormulaR1C1 = "C.A Total"
        Range("M1").Select
        ActiveCell.FormulaR1C1 = "Responsable d'entretien"
        Range("N1").Select
    Dim tableau(13) As String
    Dim i As Integer
    Dim cel As Range
    Set cel = Range("A1")
    For i = 1 To 13
      tableau(i) = cel.Offset(0, i)
      Next i
     
     
    Worksheets("Liste_Etats_Production").Select
    Dim tableau2(37) As String
    Dim j As Integer
    Dim cel2 As Range
    Set cel2 = Range("A1")
    For j = 1 To 37
      tableau2(j) = cel2.Offset(0, j)
      Next j
     
     
    End Sub
    Donc voila mon probleme est en fait que je voudrait comparer les 13 entête de collone qui sont ranger dans "tableau" au entête de collone dans "tableau2", et si une entête de collone de tableau2 est differente de tableau alors il faut supprimer la collone en question.Mon but c'est de garder toutes
    les collone de tableau2 ayant le meme nom d'entête que tableau(Intervenant Type de ligne, Salaire brut mesuel ,Nb jours potentiels, Nb jours facturables ,Nb jours hors projet ,Nb jours d'absence ,Coût direct Coût des notes de frais TJM ,C.A Intervenant ,C.A Total Responsable d'entretien) quelque soit le nom des entête de collone de tableau2.


    J'espere avoir été assez explicite.
    Merci de vos future reponse

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bonjour Keitarokun, bienvenue sur le forum.
    Tu ne le sais pas encore mais le code doit être balisé afin d'être plus facilement visible. Pour ça, il suffit de le sélectionner et de faire un clic sur l'icône # qui apparaît en mode d'édition du message. Pour corriger, tu as le bouton Editer en bas de ton message.
    A+

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Déjà tu peux simplifier la premier partie pour renseigner les en-têtes de la feuille de calculs (il n'est jamais bon de sélectionner cellule ou feuille, ça alourdit le code et ralentit les procédures. Un exemple de ce que tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim En_Tetes, NoCol as byte
    Sheets.Add
    Worksheets("Feuil1").Select
    En_Tetes = Array("", "Intervenant", "Type de ligne", "Salaire brut mensuel", "Nb jours potentiels", "Nb jours facturables", "Nb jours hors projet", "Nb jours d'absences", "Coût des notes de frais", "Coût direct", "TJM", "C.A Intervenant", "C.A Total", "Responsable d'entretien")
    For NoCol = 1 To UBound(En_Tetes)
        Cells(1, NoCol) = En_Tetes(NoCol)
    Next
    Pour la comparaison des en-têtes, je te propose d'utiliser "Join" qui te permettra de verifier dans celui des entêtes de ta feuille ajoutée, l'existence d'un entête de la feuille existante ("Liste_Etats_Production"). Pas besoin d'un tableau.
    Tu commences par définir la dernière colonne existante et tu vérifies que chaque entête existe dans le tableau précédent (En_Tetes). Si elle n'existe pas, tu supprimes la colonne (si c'est bien ce que tu veux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim DerniereColonne as byte
    Dim Fl2 as worksheet
    Set Fl2 = Worksheets("Liste_Etats_Production")
    DerniereColonne = Fl2.Range("IV1").End(xlToLeft).Column
    For NoCol = DerniereColonne to 1 step -1
         If not(Instr(Lcase(Join(En_Tetes)), Lcase(FL2.Cells(1,NoCol).value )<> 0) then _
              FL2.Columns(NoCol).delete
    Next
    Je n'ai pas testé cette dernière partie mais ça devrait aller.
    Si tu as un pb, tu dis
    A+

  4. #4
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Merci beaucoup je teste sur le champs ta solution et je te tient au courant.

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Attention : Je n'ai pas tenu compte de la casse (majuscule ou minuscule) mais on peut également arranger ça
    Tu dis
    A+

  6. #6
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Voila j'ai tester ton code il est sous cette forme:

    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
     
    Sub comparaison()
     
     
    Dim En_Tetes, NoCol As Byte
       Sheets.Add
       Worksheets("Feuil1").Select
       En_Tetes = Array("", "Intervenant", "Type de ligne", "Salaire brut mensuel", "Nb jours potentiels", "Nb jours facturables", "Nb jours hors projet", "Nb jours d'absences", "Coût des notes de frais", "Coût direct", "TJM", "C.A Intervenant", "C.A Total", "Responsable d'entretien")
       For NoCol = 1 To UBound(En_Tetes)
       Cells(1, NoCol) = En_Tetes(NoCol)
       Next
     
     
    Dim DerniereColonne As Byte
      Dim Fl2 As Worksheet
      Set Fl2 = Worksheets("Liste_Etats_Production")
      DerniereColonne = Fl2.Range("IV1").End(xlToLeft).Column
      For NoCol = DerniereColonne To 1
      If not(Instr(Join(En_Tetes),FL2.Cells(1,NoCol).value <> 0) then _
              FL2.Columns(NoCol).delete
     
     
     
    Next
    Cependant cela me fait un erreur de compilation (erreur de sintaxe) le probleme viendrai de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If not(Instr(Join(En_Tetes),FL2.Cells(1,NoCol).value <> 0) then _
              FL2.Columns(NoCol).delete

    Merci d'avance.

  7. #7
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Il est vrai que le probleme des majuscule et minuscule pourai ce poser plus tard car c'est un programme pour une entreprise et surtout j'ai commencer VBA il y a 2 jours , je suis plus orienter c,c++ mais malheureusement je doit le faire en VBA donc ton aide m'est tres precieuse.

  8. #8
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    ok bah bonne nouvelle sa marche tu vient de resoudre un gros probleme merci beaucoup j'aurait peut etre une autre question dans pas lompgtemps donc je laisse le post non resolu encore merci a toi.
    je vient de retester il manque des collone je recommence les testes.

  9. #9
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Ok il manque les Collone : C.A Intervenant C.A Total dans Liste_Etats_Production et

    Coût direct Coût des notes de frais s'inverse

    donc mes 2 derniere question serait comment garder le meme ordre des collone que dans Feuil1 et pourquoi C.A Intervenant C.A Total on disparut?

    je cherche de mon coter merci.
    j'ai ma petite idee pour la disparition de C.A. Intervenant C.A. Total cela doit etre a cause des "."

  10. #10
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    ok j'ai trouver pourquoi C.A.Intervenant et C.A. Total disparaissait c'est parce que dans le code c'etait Note C.A Intervenant et C.A Total en gros il manquait un "." dans les 2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     En_Tetes = Array("", "Intervenant", "Type de ligne", "Salaire brut mensuel", "Nb jours potentiels", "Nb jours facturables", "Nb jours hors projet", "Nb jours d'absences", "Coût des notes de frais", "Coût direct", "TJM", "C.A. Intervenant", "C.A. Total", "Responsable d'entretien")
    Cependant mettre dans le meme ordre je n'arrive toujour pas a le faire.

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par Keitarokun
    Ok il manque les Collone : C.A Intervenant C.A Total dans Liste_Etats_Production et

    Coût direct Coût des notes de frais s'inverse

    donc mes 2 derniere question serait comment garder le meme ordre des collone que dans Feuil1 et pourquoi C.A Intervenant C.A Total on disparut?

    je cherche de mon coter merci.
    j'ai ma petite idee pour la disparition de C.A. Intervenant C.A. Total cela doit etre a cause des "."
    pour la petite idée, tu ne te trompes pas.
    Pour remettre tes colonnes dans l'ordre, je te laisse chercher car là, tout de suite maintenant dans l'immédiat, je m'absente
    Bon courage
    A+

  12. #12
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    je vient de trouver aussi il suffisait d'inverser
    "Coût direct", "Coût des notes de frais"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       En_Tetes = Array("", "Intervenant", "Type de ligne", "Salaire brut mensuel", "Nb jours potentiels", "Nb jours facturables", "Nb jours hors projet", "Nb jours d'absences", "Coût direct", "Coût des notes de frais", "TJM", "C.A. Intervenant", "C.A. Total", "Responsable d'entretien")
    qui etait avant "Coût des notes de frais","Coût direct" dans cette ordre la voila

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Alors quand c'est résolu, on fait un clic sur en bas de cette fenêtre

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

Discussions similaires

  1. Macro VBA Excel : Comparaison des deux 1ères colonnes de 2 fichiers Excel
    Par techneric dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/01/2007, 10h00
  2. VBA - Excel - comparaison de deux feuilles
    Par toto14 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 13/10/2006, 13h52
  3. [VBA-Excel] copier plusieurs fois une colonne dans une feuille Excel
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 09/08/2006, 18h43
  4. [VBA]excel comparaison de chaine de caractere
    Par ogenki dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/01/2006, 15h32
  5. [VBA Excel] Trier une plage à plusieurs colonnes
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 22/12/2005, 17h04

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