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 :

for each in next instruction dans un tableau : sens de parcours dans le tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    responsable technique
    Inscrit en
    Décembre 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : responsable technique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 15
    Par défaut for each in next instruction dans un tableau : sens de parcours dans le tableau
    Bonsoir,
    j'utilise l'instruction for each ... in ...next pour parcourir les éléments d'un tableau.
    Je ne sais pas pourquoi on parcourt d'abord verticalement les colonnes (lignes par lignes) puis on change pour passer à la colonne suivante.
    Je souhaiterais en réalité travailler horizontalement par lignes :
    balayer chaque ligne sélectionnée en parcourant les colonnes puis on change de ligne et on recommence.
    Comment je peux modifier le sens de parcours : d'abord horizontal puis en fin de ligne on change de ligne.
    Merci par avance

  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 179
    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 179
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici un exemple parmi d'autres du parcours des lignes par colonnes d'un tableau structuré (ListObject) nommé t_Staff

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub t()
      Const n As String = "t_Staff"
      Dim lo As ListObject
      Dim Cc As Range
      Dim Cr As Range
      Set lo = Range(n).ListObject
      For Each Cc In lo.HeaderRowRange
        Debug.Print "[" & Cc.Value & "]"
        For Each Cr In lo.ListColumns(Cc.Value).DataBodyRange
          Debug.Print Cr.Value
        Next
      Next
      Set lo = Nothing: Set Cr = Nothing: Set Cc = Nothing
    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
    Homme Profil pro
    responsable technique
    Inscrit en
    Décembre 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : responsable technique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 15
    Par défaut
    merci beaucoup j'essaie tout cela demain et vous tiens informé.

    Ce qui est très étrange est que si on fait la sélection du tableau manuellement dans la feuille excel, (selection) alors le sens est bon!!!

    Très bonne soirée

  4. #4
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    Citation Envoyé par wes333 Voir le message
    Ce qui est très étrange est que si on fait la sélection du tableau manuellement dans la feuille excel, (selection) alors le sens est bon!!!
    il faut passer d'abord par l'objet Worksheet apparemment MSDN

    .Donc modifier le code de Philippe mais en passant par l'objet Worksheet donc Worksheet.Range
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Worksheets("Sheet1").Range("B2:Z22")
       .Range(.Cells(1, 1), .Cells(5, 3)).Font.Italic = True 
    End With

  5. #5
    Membre averti
    Homme Profil pro
    responsable technique
    Inscrit en
    Décembre 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : responsable technique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 15
    Par défaut
    bonjour,

    merci à tous les deux pour votre aide.

    En réalité avec l'exemple de Mat j'ai compris mon erreur.

    Je n'avais pas défini mon tableau en utilisant Range sur des données existantes. Je les avais directement lues cellule par cellule sur une plage existante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         tableau(i,j).value = activesheets.cells(i,j)
    En définissant le tableau avec range :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         Set tableau = Worksheets("SY54410").Range(Cells(1, 1), Cells(lignes, colonnes))
    ça marche bien, on parcourt le tableau dans le bon sens.

    Très bonne journée

    Merci encore

  6. #6
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    bonjour content que le problème soit solutionné.
    Ne pas hésiter à éplucher le MSDN car la programmation en VBA c'est complexe il y a des tas de fonctionnalités à utiliser.

Discussions similaires

  1. [XL-2007] Copier coller plage de cellules dans une boucle For Each..Next
    Par JulieD33 dans le forum Excel
    Réponses: 3
    Dernier message: 02/03/2015, 11h19
  2. [AC-2010] For each next dans un ordre précis
    Par Tierisa dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/04/2014, 12h47
  3. "For each node .. Next" et Treeview
    Par koluche dans le forum VB.NET
    Réponses: 13
    Dernier message: 21/04/2011, 13h19
  4. [DAO] Instruction For Each .. Next
    Par ancel17 dans le forum VBA Access
    Réponses: 10
    Dernier message: 24/04/2007, 11h07
  5. [XSL-FO] Modifer une structure de tableau dans for-each
    Par serwol dans le forum XSL/XSLT/XPATH
    Réponses: 24
    Dernier message: 17/06/2005, 17h38

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