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 pour Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 1
    Par défaut Macro pour Excel
    Bonjour à tous !

    Voila ce que j'essais de faire. J'extrais des données brut convertis en fichier excel. Ca fait 41 colonne. Mon objectif est de suprimer les colonnes qui ne m'interesses pas en fonction de leurs noms.
    Par exemple un tableau à 4 colonne A B C D je veux supprimer la A et D.

    Voici mon code :

    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
    Private Sub CommandButton1_Click()
     
     
    Const PremLig = 1
    Dim TabMotsCles
    Dim W As String
    W = "A"
    Dim s As String
    Dim E As String
    Dim Lig As Long, DerLig As Long, NumMot As Long, NbMots As Long
    Dim trouve As Boolean
      ' initalisations
    STEP1:
      TabMotsCles = Array("IMPACT", "RENDEMENT")
    NbMots = UBound(TabMotsCles, 1)
      With Sheets(1)
        ' dernière ligne
     
            While W <> "Z"
            DerLig = .Range(W & 1).End(xlUp).Row
        ' traitement de la colonne colcritere
            For Lig = DerLig To PremLig Step -1
        ' met en majuscule la cellule
            s = UCase(.Range(W & Lig))
            trouve = False
        ' recherche d'un mot cle dans s
            For NumMot = 1 To NbMots
                If InStr(1, s, TabMotsCles(NumMot)) > 0 Then
                trouve = True
                End If
            Next NumMot
        ' si trouve mot cle supprimer la ligne lig
          If trouve Then
            Columns(W).Delete Shift:=xlToLeft
          End If
     
        Next Lig
        E = Asc(W)
         E = E + 1
         W = Chr(E)
        Wend
      End With
      End If
    End Sub
    Le probleme est que ca ne fonctionne pas toujours et qu'il faut lancer la macro plusieurs fois pour arriver au résultat.

    J'attend avec impatience votre aide.

    Merci

  2. #2
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    tu peut commenter ton code et ses commentaires ?

    ' si trouve mot cle supprimer la ligne lig
    If trouve Then
    Columns(W).Delete Shift:=xlToLeft
    End If
    ta structure de fichier ?
    la recherche se fait sur des lignes de titres?
    ne pas oublier que si tu supprimes une colonne ta boucle est automatiquement incrémenté
    en clair
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    pour  colonn de 1 à 26 
    si valeur de cellule(ligne 1, colonn)= test alors
    efface la colonne
    'la colonne n'est pas tester parce la valeur de colonn n'a pas était diminué de celle effacée
    imaginons que la ligne 1 contiennent les valeur à tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for t=1 to 26 ' colonne de a à z
    if cells(1,t).value= valeur1 or cells(1,t).value= valeur2 then
    column(t).delete
    t=t-1   ' recul de la variable compteur
    end if
    u=u+1  ' comptage des colonnes
    if u =26 then exit for ' sortie de la boucle si toutes les colonnes ont été testées
    next
    une boucle while / wend aurait effectuer une tâche similaire
    macros non testée écrite à la volée

Discussions similaires

  1. macro pour excel
    Par bichet62 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/01/2014, 09h37
  2. [Toutes versions] macro pour excel : application d'une augmentation annuelle en %
    Par friseb dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/03/2010, 09h13
  3. macro pour excel
    Par vanille972 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/09/2007, 09h08
  4. Complexité d'une macro pour Excel
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/04/2006, 11h23
  5. Réaliser une macro en VBA pour excel afin de créer un graphe
    Par xavier le breuil dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/12/2005, 14h41

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