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 données indexées


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Avril 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2015
    Messages : 13
    Points : 4
    Points
    4
    Par défaut Boucle sur données indexées
    Bonjour,

    Je débute en VBA mais je bloque sur un truc :
    J'ai des données du type A1, A2, ...., A10.
    Ces valeurs doivent être recopiées dans des cellules sur une ligne (de D11 à M11).
    Comment pourrai-je le faire avec une boucle du type For i = 1 to 10.
    Merci d'avance.

  2. #2
    Membre du Club
    Homme Profil pro
    Chargé d'étude
    Inscrit en
    Mars 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'étude

    Informations forums :
    Inscription : Mars 2014
    Messages : 50
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Tu peux tester ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
     
    Dim i As Integer
    Dim j As Integer
     
    For i = 1 To 10
     
            Cells(11, j + 4) = Range("A" & i)
            j = j + 1
    Next i
     
    End Sub

  3. #3
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il faut simplement retenir qu'une cellule possède 2 coordonnées : Ligne et Colonne
    On peut, en VBA, faire référence à une cellule ainsi : Worksheets("Nom de la feuille").Cells(N° Ligne, N°Colonne)

    dans ton exemple, les cellules en A ont leur ligne qui change à chaque fois
    les cellules de destinations sont sur la même ligne, ce sont les colonnes qui changent

    on va donc utiliser la boucle i = 1 to 10 pour affecter à chaque changement de ligne (en A), un changement de colonne (dans la plage de destination)

    voici un exemple à adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Exemple()
     
    Dim i As Long
     
    With ThisWorkbook.Worksheets("Feuil1")
        For i = 1 To 10
            .Cells(11, i + 3) = .Cells(i, 1)
        Next i
    End With
     
    End Sub

  4. #4
    Candidat au Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Avril 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2015
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Merci mais ça ne marche pas. Il me sort une erreur d'exécution '1004' (La méthode 'Range' de l'objet '_global' a échoué).
    C'est du chinois pour moi

    Merci joe.levrai, mais elles sont où mes valeurs A1, A2, A3, ...., A10 (qui peuvent être aussi (DIAMETRE1, DIAMETRE2, ..., DIAMETRE10).
    Cdlt

  5. #5
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    j'ai annoté le 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
    Sub Exemple()
     
    Dim i As Long
     
    ' on fait référence à la feuille avec un With
    ' ce qui évite de répéter cette référence jusqu'au End With
    With ThisWorkbook.Worksheets("Feuil1")
     
        ' on fait varier i de 1 à 10
        For i = 1 To 10
            ' ici ce sont les cellules de destination (de D11 à M11)
            .Cells(11, i + 3) = .Cells(i, 1)
                                ' ici ce sont les cellules sources (de A1 à A10)
        Next i
    End With
     
    End Sub

  6. #6
    Candidat au Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Avril 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2015
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    joe,levrai

    je n'ai pas de cellules sources.
    Les valeurs A1, A2, ... sont des valeurs que j'introduis dans une saisie à partir d'une userform. Elles sont indexées de 1 à 10.
    Je voudrai que ces valeurs soient recopiées dans des cellules de la ligne 11 (D11 à M11).
    Voilà.
    Merci

  7. #7
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Tes données A1 ... A10 sont inscrites où exactement ?

    ta question initiale laissait à entendre que tu parlais de Cellules A1 à A10

  8. #8
    Candidat au Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Avril 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2015
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Non joe.levrai
    EN fait, j'avais pris comme exemple A1, A2, ...
    Mais ce sont des valeurs que j'introduis dans des TextBox qui sont nommées HBA1, HBA2, HBA3, ....
    Après saisies, je voudrai que ces valeurs soient recopiées dans des cellules d'une même ligne.
    Au final, je veux éviter ça :

    [D11] = HBA1
    [E11] = HBA2
    [F11] = HBA3
    [G11] = HBA4
    [H11] = HBA5
    [I11] = HBA6
    [J11] = HBA7
    [K11] = HBA8
    [L11] = HBA9

    Cdlt

  9. #9
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Les Textbox sont dans un Userform je présume ?

    Partons du principe que la macro doit se déclencher quand on clic sur un Bouton Appelé "Validation"
    Le code est à placer dans le Userform directement

    Et si c'est pas ça encore une fois, soit plus précis dans tes descriptions, nous n'avons pas le classeur sous les yeux et on peut pas tout deviner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Validation_Click()
    Dim i As Long
     
     
    For i = 1 To 10
        ThisWorkbook.Worksheets("Feuil1").Cells(11, i + 3) = Me.Controls("HBA" & i)
    Next i
     
    End Sub

  10. #10
    Candidat au Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Avril 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2015
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    C'est exactement ça, ça marche nickel.
    Merci beaucoup joe. Je ne connaissais pas le ME.Controls !

    Merci

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

Discussions similaires

  1. [2008] Index sur données XML
    Par Badplayer1603 dans le forum Développement
    Réponses: 3
    Dernier message: 12/11/2014, 14h51
  2. [XL-2010] Boucle sur groupe de données et attribution d'un rang
    Par Fabfab750 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/11/2014, 12h17
  3. [WD19] Bug sur l'indexation d'un fichier de donnée HyperFile
    Par lololebricoleur dans le forum WinDev
    Réponses: 27
    Dernier message: 20/02/2014, 13h43
  4. Réponses: 0
    Dernier message: 30/03/2009, 19h45
  5. Réponses: 22
    Dernier message: 13/05/2008, 14h30

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