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 :

Demade précision sur boucles VBA


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 52
    Points : 34
    Points
    34
    Par défaut Demade précision sur boucles VBA
    Bonsoir,
    Je cherche le moyen à l’intérieure d’une boucle de placer arbitrairement chaque cellule dans un tableau d’une autre feuille

    Par exemple :
    Ma boucle va lire les 10 cellules A1 à A10 de la feuille 1 et je souhaite placer chacune de ces cellules dans la colonne B ( B1 à B10) de la feuille 2 mais à des lignes arbitrairement différentes

    Exemple :
    A1-----en ---B5
    A2-----en ---B9
    A3----en ----B4
    Etc…… ;
    Avec quel code ?

    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
    12 910
    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 : 12 910
    Points : 28 889
    Points
    28 889
    Billets dans le blog
    53
    Par défaut
    Bonsoir,
    Je ne vois pas ce que tu appelles par arbitraire mais voilà un petit exemple.
    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 shtFrom As Worksheet, shtTo As Worksheet
     With ThisWorkbook
      Set shtFrom = .Worksheets("Feuil1"): Set shtTo = .Worksheets("Feuil4")
     End With
     With shtTo
     .Range("B5") = shtFrom.Range("A1")
     .Range("B9") = shtFrom.Range("A2")
     .Range("B4") = shtFrom.Range("A3")
     ' etc ....
     End With
    End Sub
    [EDIT] Désolé mon code n'était pas complet

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    ça pourra paraitre de niveau intermédiaire, ci-joint proposition utilisant les variables tableaux
    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
    Sub Test()
    Dim Tb
     
    Tb = Worksheets("Feuil1").Range("A1:A10")
    ALEA Tb
    Worksheets("Feuil2").Range("B1:B10") = Tb
    End Sub
     
    Private Sub ALEA(ByRef Tbl)
    Dim i As Long, j As Long, N As Long
    Dim Tmp As String
     
    Randomize
    N = UBound(Tbl, 1)
    For i = 1 To N
        j = CLng(((N - i) * Rnd) + i)
    'on inverse les lignes i et j
        If i <> j Then
            Tmp = Tbl(i, 1)
            Tbl(i, 1) = Tbl(j, 1)
            Tbl(j, 1) = Tmp
        End If
    Next i
    End Sub

  4. #4
    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 : 70
    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 à tou(te)s,

    Je pensais aussi à cette solution, à adapter bien sur, avec des nombres aléatoires
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro3()
    Dim tbl
    tbl = Range("A1:A10")
    Range("B1:B10").FormulaR1C1 = "=RAND()"
    Range("A1:B10").Sort key1:=Range("B1:B10"), order1:=xlAscending, Header:=xlYes
    Range("B1:B10") = Range("A1:A10").Value
    Range("A1:A10") = tbl
    End Sub
    PS : je n'avais pas vu ta proposition, mercatog, bonne soirée

  5. #5
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Bonsoir Alain,

    voici un autre code j'espère assez formateur :
    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
    Function AleatRange(Rg As Range)
             TS = Rg:  N& = Rg.Count:  ReDim AR(1 To N, 1 To 1):  Randomize
     
             For R& = 1 To N
                 Do
                     C& = Fix(Rnd * N) + 1:  B = AR(C, 1) = "":  If B Then AR(C, 1) = TS(R, 1)
                 Loop Until B
             Next
     
             AleatRange = AR
    End Function
     
     
    Sub Demo()
        Feuil2.[B1:B10] = AleatRange(Feuil1.[A1:A10])
    End Sub

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 52
    Points : 34
    Points
    34
    Par défaut précision
    Merci messieurs pour ces propositions
    je vais les essayer, mais je précise que dans mon esprit
    Arbitrairement ne veut pas dire aléatoirement

    je ne souhaite pas empiler mes 10 cellules dans le même ordre que sur la feuille 1 mais à des lignes différentes choisies définitivement

    Bien cordialement

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 910
    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 : 12 910
    Points : 28 889
    Points
    28 889
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    C'est justement la question que je te posais.
    Si tu veux de l'aide il serait intéressant pour toi d'être plus explicite.

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Citation Envoyé par alain16 Voir le message
    Exemple :
    A1-----en ---B5
    A2-----en ---B9
    A3----en ----B4

    Avec quel code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub DemoArbitraire()
        L = [{5,9,4}]
        For R = 1 To 3:  Feuil2.Cells(L(R), 2) = Feuil1.Cells(R, 1):  Next
    End Sub

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …


    __________________________________________________________________________________________
    Pour s'endormir, un mouton ne peut compter que sur lui-même …

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 52
    Points : 34
    Points
    34
    Par défaut merci
    Merci Marc-L c'est ce que je cherchais

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

Discussions similaires

  1. [AC-2003] Boucle VBA sur des controles
    Par buzz73 dans le forum IHM
    Réponses: 2
    Dernier message: 29/06/2009, 11h30
  2. probleme de novice sur boucle vba
    Par gerald57 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/06/2007, 21h08
  3. Précision sur Oracle 9iAS r2
    Par Patmane dans le forum Oracle
    Réponses: 9
    Dernier message: 18/03/2007, 04h41
  4. [VBA-E]Problème de triet effacement de doublon sur boucle
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/09/2006, 11h06
  5. Précision sur les sauvegarde à chaud
    Par alxkid dans le forum Administration
    Réponses: 2
    Dernier message: 09/08/2004, 18h55

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