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 :

nommer des colonnes en fonction des données de ces colonnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut nommer des colonnes en fonction des données de ces colonnes
    Bonjour
    Je viens vers vous pour enrichir mon code vba sur l'extraction de données d'un tableau Excel.
    Je précise que ce tableau n'est pas le mien . C'est un tableau que je recois tous les matin.

    Ce tableau contient plusieurs colonne dont certaines sans entetes. Et j'aimerais renommer ces colonnes en fonctions des données qui s'y trouvent.
    Par exemple:
    Si une colonne contient uniquement des nombre alors je nommerai cette colonne "donnees"
    Si une colonne contient des a la fois du texte et des nombre (alphanumerique) alors que je nommerai cette colonne " NOM"
    ect.. jusquà la dernier colonne du tableau

    Mon code commencerait ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With ActiveWorkbook.Worksheets("feuil1")
    Dim PlageColonne As Range
    Set Plagecolonne = .Range("A1").CurrentRegion
    ensuite je bloque .

    Un coup de main serait le bienvenu

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    dans l'hypothèse ou la ligne 1 est vide pour insérer "Donnée" ou "nom" et que les données commence depuis la ligne 2 tu peux tester ce bricolage avec prudence
    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
    Sub VérifIerMembres()
    Application.ScreenUpdating = False
        Dim Cellule As Range, Plage As Range
        Dim nbLignes As Long, nbColonnes As Long
        nbColonnes = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
         For C = 1 To nbColonnes
         nbLignes = Cells(Rows.Count, C).End(xlUp).Row
         For i = 2 To nbLignes
            If IsNumeric(Cells(i, C)) Then X = X + 1
        Next i
        If X = i - 2 Then Cells(1, C) = "Donnée" Else Cells(1, C) = "NOM"
        X = 0
        Next C
    Application.ScreenUpdating = True
    End Sub
    Fichiers attachés Fichiers attachés

  3. #3
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, une variante de la macro de BENNASR (que je salue) qui devrait être plus rapide en cas de grand nombre de lignes car je ne vérifie pas forcément toutes les cellules d'une colonne.

    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
    Sub VérifIerMembres()
        Application.ScreenUpdating = False
        Dim nbLignes As Long, nbColonnes As Long
        Dim ColonneNum As Boolean
        Dim C As Long, i As Long
     
        nbColonnes = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
     
        For C = 1 To nbColonnes
            nbLignes = Cells(Rows.Count, C).End(xlUp).Row
            ColonneNum = True  ' On part du principe que la colonne est numérique
     
            For i = 2 To nbLignes
                If Not IsNumeric(Cells(i, C)) Then
                    ColonneNum = False
                    Exit For  ' On arrête dès qu'on trouve une valeur non numérique
                End If
            Next i
     
            ' Mise à jour du titre de la colonne
            If ColonneNum Then
                Cells(1, C).Value = "Donnée"
            Else
                Cells(1, C).Value = "NOM"
            End If
        Next C
     
        Application.ScreenUpdating = True
    End Sub

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Très bien vu franc .. bravo 👍👍 inutile de continuer la vérification si cellule n est pas un nombre

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/10/2015, 15h23
  2. Réponses: 1
    Dernier message: 04/12/2013, 08h56
  3. Extraire des donnes dans une fonction Javascript
    Par napi15 dans le forum Langage
    Réponses: 4
    Dernier message: 20/04/2013, 00h11
  4. Réponses: 3
    Dernier message: 09/07/2010, 08h51
  5. Réponses: 0
    Dernier message: 25/05/2010, 01h43

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