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 :

Boucle sur colonnes précis


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 16
    Par défaut Boucle sur colonnes précis
    Hello,

    Je bloque au niveau de la réalisation d'une boucle (étant novice en vba). En fait, la boucle que je veux réaliser, ne doit s'appliquer que sur des colonnes précises, j'ai pas mal essayer mais je n'y arrive pas. Quelqu'un à une idée ?

    Milles Merciiiiiiiii

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une solution parmi d'autres
    Voici une exemple d'une procédure dont on passe comme arguments la plage et le n° de colonne sur laquelle la boucle doit être effectuée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Boucle(DataBase As Range, NumCol As Integer)
     Dim r As Long
     With DataBase
      For r = 2 To .Rows.Count
       ' Ici lecture sur la colonne NumCol 
       msgbox .Cells(r, NumCol) 
      Next
     End With
    End Sub
    Exemple pour appeler la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub TestBoucle()
     ' Rng représente la plage commencant en cellule A1 de la feuille nommée db
     Dim rng As Range: Set rng = ThisWorkbook.Worksheets("db").Range("A1").CurrentRegion
     Boucle rng, 2 ' Lecture sur la colonne 2
    End Sub
    On pourrait bien entendu améliorer la procédure en plaçant un argument optionnel avec valeur par défaut
    Exemple avec comme valeur par défaut 1
    Ainsi si on invoque la procédure sans préciser le deuxième argument la boucle de lecture se fera sur la colonne 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Boucle(DataBase As Range, Optional NumCol As Integer = 1)
     Dim r As Long
     With DataBase
      For r = 2 To .Rows.Count
       Debug.Print .Cells(r, NumCol)
      Next
     End With
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 16
    Par défaut
    Merci Phillipe pour ta réponse !

    Procédure et fonction me sont un peu compliqué et je me suis cassé la tête depuis que t'a posté sans parvenir à bien intégrer le code

    Pour moi les colonnes que je veux leur affecter ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Selection.CurrentRegion.Select
    cell.Value = Val(cell.Value)
    sont les suivants : (B, C, D, F, H, J)

    C'est possible de me montrer comment je ferai dans ce cas ?

    J'ai essayé de le faire mais sans une aide ça sera impossible, merci !

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Procédure et fonction me sont un peu compliqué et je me suis cassé la tête depuis que t'a posté sans parvenir à bien intégrer le code
    Cela va alors être très compliqué parce-qu'en VBA on ne travaille qu'avec des procédures.
    En vitesse et à la grosse louche.
    Une procédure commence par SUB leNom() et se termine par End Sub et les fonctions sont également des procédures mais qui peuvent renvoyer un résultat et commence par Function leNom() et se termine pas End Function. Les procédures se trouvent dans un module qui lui même fait partie d'un projet (Le classeur). Il peut y avoir un ou plusieurs modules dans un projet.
    Pour moi les colonnes que je veux leur affecter ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Selection.CurrentRegion.Select
    cell.Value = Val(cell.Value)
    sont les suivants : (B, C, D, F, H, J)
    C'est possible de me montrer comment je ferai dans ce cas ?
    Il faudrait peut-être savoir ce que tu veux faire à l'intérieur de cette boucle.
    Explique en français ce que tu veux réaliser et surtout pas en montrant du code.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 16
    Par défaut
    Merci Phillipe,

    Très brièvement :

    Ce que j'ai : Une feuille Excel avec des colonnes de montants. Ces montants sont stockés en texte.

    Le problème : Je ne peux pas appliquer une macro de mise en forme qui ne reconnait pas les nombres stockés en texte.

    Solutions : Le code que j'ai posté permet de résoudre ça, sauf : je ne peux pas l'appliquer sur des colonnes précise, pourquoi ? Les colonnes qui contiennent ces montants stockés en texte sont séparés par des colonnes contenant du texte, ce qui rend impossible l'application à l'arrache du code formulé pour le Range ("A:J"), conséquence : le vrai texte que je veux garder deviens "0" et c'est normal.

    Ce que je cherche : Précisez sur quelles colonnes la boucle va tourner

    Mercii

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est du bricolage mais cela fonctionne
    Toujours avec la même procédure.
    Ce qui est en rouge doit être adapté.
    db est le nom de la feuille
    "3;5" représente le n° des colonnes. J'aurais pu le faire avec les lettres des colonnes mais j'ai un peu la flemme. Donc tu dois mettre entre guillemets les numéros des colonnes séparés par un point virgule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub TestBoucle()
     ' Rng représente la plage commençant en cellule A1 de la feuille nommée db
     Dim rng As Range: Set rng = ThisWorkbook.Worksheets("db").Range("A1").CurrentRegion
     Dim Column() As String: Column = Split("3;5", ";")
     Dim c As Integer
     For c = 0 To UBound(Column)
      Boucle rng, Val(Column(c)) ' Lecture sur la colonne 2
     Next
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Boucle(DataBase As Range, NumCol As Integer)
     Dim r As Long
     With DataBase
      For r = 2 To .Rows.Count
      .Cells(r, NumCol) = Val(.Cells(r, NumCol))
      Next
     End With
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Boucle sur colonnes et sur lignes
    Par bilou_12 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/02/2012, 11h27
  2. Boucle sur colonne
    Par slimlus dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 16/09/2010, 11h57
  3. [XL-97] Boucle sur colonne + replace
    Par brasco06 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/07/2009, 10h59
  4. Boucle sur colonnes
    Par leaprovence dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/05/2008, 23h45
  5. [vba-E2003] problème boucle sur colonne
    Par stargates dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/07/2007, 19h57

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