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 faire une boucle (et utiliser une fonction créer)


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Points : 7
    Points
    7
    Par défaut VBA faire une boucle (et utiliser une fonction créer)
    Bonjour, pour commencé je suis loin d'être un expert avec VBA donc voici mon problème. Je cherche a créer une boucle qui utilise une fonction que j'ai créer. Mon problème majeure est que mes données sont sur une feuille différente de celle où je voudrais que mon résultat apparaisse.

    sur la feuille 1 : j'ai des données
    sur ma feuille 2 : j'aimerai que mes réponse apparaisse ici

    j'aimerai que la boucle fasse la fonction pour toutes les lignes et ensuite, lorsque terminé, passe a l'autre colonne(incrémentation de 1 colonne) et ainsi de suite
    P.S: le nombre de colonne et de ligne vont varier d'une fois a l'autre, Voici mon autre difficulté je suis capable pour une plage définie mais je ne suis pas capable lorsqu'il faut dynamisé la boucle.

    merci a l'avance

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonsoir,
    et si tu publiais le(s) code(s) que tu as déjà préparé(s)
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    Voici une proposition de code pour faire un parcourt de l'ensemble de ton tableau.

    Dans cet exemple, je suis parti sur la fait que le haut du tableau est en A3 (ligne 3, colonne 1)

    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
    Sub partourt()
        Dim ligne As Integer
        Dim col As Integer
     
        col = 1
        '1 pour colonne A
        ligne = 3
        '3 pour ligne 3
     
        'boucle pour parcourir les colonnes
        Do Until col > Range("A3").End(xlToRight).Column
            'boucle pour parcourir les lignes
            Do Until ligne > Range("A3").End(xlDown).Row
                'le travail à faire
                MsgBox ligne & "/" & col
                'passage à la ligne suivante
                ligne = ligne + 1
            Loop
            'passage à la colonne suivante
            col = col + 1
            'pour cette nouvelle colonne, on se "replace" en haut de tableau pour les lignes
            ligne = 3
        Loop
     
    End Sub
    Pour toi, tu ajoutes le code que tu veux à la place de la msgbox.
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  4. #4
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    voila ce que j'ai essayé :
    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
    Sub rend3()
    
    Dim r As Integer
    Dim c As Integer
    
    Sheets("histo").Select
    c = 3
    r = 15
    Do Until Cells(r, 3) = ""
        Do Until r = Cells(2, c).Value
            rendement3ans(
            
        r = r + 1
        Loop
    c = c + 1
    Loop
    
    
    End Sub
    je ne comprend pas comment spécifié a ma fonction que la cellule qu'elle doit prendre est sur la feuille histo et que je veut le resultat sur la feuille rendement
    cells(2,c) est une cellule avec le compte du nombre de données (lignes) que j'ai.

    voici ou je suis bloqué maintenant :

    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
    Sub rend3()
    
    Dim r As Integer
    Dim c As Integer
    Dim rr As Integer
    Dim cc As Integer
    c = 3
    r = 15
    rr = 7
    cc = 4
    
    x = Sheets("histo").Select  (cells(r,c).value-cells.Offset(r+1095,c).Value)/cells.Offset(r+1095,c).Value)
    Do Until Cells(15, c) = ""
        Do Until Cells(r, 3) = ""
        
            Sheets("rendement").Select
            Cells(rr, cc).Select
            Cells(rr, cc) = x
            rr = rr + 1
            cc = cc + 1
        r = r + 1
        Loop
    c = c + 1
    Loop
    
    
    End Sub

  5. #5
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    Tu n'as pas besoin de sélectionner une cellule pour modifier son contenu.
    En faisant :
    Tu peux modifier le contenue de la cellule A1.

    Il en est de même au niveau des feuilles de calcul.

    Quand tu ecris
    Excel part considère la feuille de calcul active. Mais on peut très bien intérroger ou modifier le contenu d'une cellule située dans une feuille non active. Pour cela il faut préciser le nom de la feuille avec la cellule. Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Sheets("rendement").Cells(rr, cc).value = x
    A la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("rendement").Select
            Cells(rr, cc).Select
            Cells(rr, cc) = x
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/02/2014, 20h39
  2. [Débutant] utiliser une boucle for avec la fonction wavread()
    Par alimo44 dans le forum Signal
    Réponses: 1
    Dernier message: 21/06/2010, 08h08
  3. comment remplir une table en utilisant une boucle
    Par nice dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 07/02/2008, 10h52
  4. Réponses: 11
    Dernier message: 18/02/2007, 23h20
  5. utiliser une valeur float pour une boucle for
    Par didi59650 dans le forum Débuter
    Réponses: 6
    Dernier message: 18/04/2006, 17h32

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