Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/09/2011, 18h22   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 53
Points : 10
Points : 10
Par défaut Boucle For Next avec 2 variables

Bonjour, je voudrais faire 1 boucle For Next avec 2 variables qui s'incrémentent simultanément.

Ex

Code :
1
2
3
4
5
6
For i = 1 to n
For j = 1 to m
 
Sheets ("Feuil1").range ("A"& i) = Sheets ("Feuil2").range ("A"& j)
Next j
Next i
Ce type de boucle n'incrémente pas i et j en même temps sur la même ligne

Comment faire ???
neninio31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 18h35   #2
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 584
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 584
Points : 886
Points : 886
Bonjour

Oui c'est normal : quel est le but ?

Si i et j doivent être identiques alors une seule boucle suffit

Code :
1
2
3
4
5
For i = 1 to m
 
Sheets ("Feuil1").range ("A"& i) = Sheets ("Feuil2").range ("A"& i)
 
Next i
Mais si le but est de recopier les valeurs, ce serait plus simple ainsi, sans boucle
Code :
Sheets ("Feuil1").range ("A1:A" & m) = Sheets ("Feuil2").range (("A1:A" & m)
Sinon explique ...
78chris est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/09/2011, 18h52   #3
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 53
Points : 10
Points : 10
Par défaut Re

Non i et je ne s'incrémente de la même façon et n'ont pas les mêmes valeurs
neninio31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 18h53   #4
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour,

Dans deux boucles imbriquées, la boucle interne tournera de 1 à m pour chaque tour de la boucle externe (boucle principale) de 1 à n.
Dans ton exemple ça revient à faire ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
Sub Boucle()
 
    Dim I As Long
    Dim n As Long
    Dim m As Long
 
    n = 10
    m = 10
 
    For I = 1 To n
 
        Sheets("Feuil1").Range("A" & I) = Sheets("Feuil2").Range("A" & m)
 
    Next I
 
End Sub
c'est à dire attribuer la valeur de A10 de la feuille 2 aux cellules A1 à A10 de la feuille 1 car la boucle interne finira toujours à 10.
Donc, comme le dis 78chris, il faut plus de précisions sur la marche à suivre.

Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/09/2011, 19h00   #5
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 53
Points : 10
Points : 10
Par défaut Re

je veux écrire automatiquement à l'activation dans la feuille "synthèse" toutes les données des autres feuilles.

Si la feuille 1 a 5 lignes remplies
Si la feuille 2 a 8 lignes remplies
.. la feuille 3 a 10 lignes remplies

la feuille Synthèse a 23 lignes remplies en suivant la chronilogie feuille 1 feuille 2 feuille 3

Donc la feuille synthèse est comme suit
A1..... valeurs A1 feuille 1
A2..... valeurs A2 feuille 1
A3..... valeurs A3 feuille 1
A4..... valeurs A4 feuille 1
A5..... valeurs A5 feuille 1
A6..... valeurs A1 feuille 2
A7..... valeurs A2 feuille 2

etc....
neninio31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 19h52   #6
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Re,

Adapte les noms des feuilles et faire un test sur une copie de ton classeur :
Code :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
 
Sub Boucle()
 
    Dim Fe As Worksheet
    Dim TblFeuilles
    Dim I As Long
    Dim J As Long
    Dim DerLig As Long
 
    'ici, les noms des feuilles où récupérer les valeurs
    TblFeuilles = Array("Feuil2", "Feuil3", "Feuil4")
 
    'affecte à la varaible FE la feuille où seront inscritent les valeurs
    Set Fe = Worksheets("Feuil1")
 
    'boucle sur les feuilles
    For I = 0 To UBound(TblFeuilles)
 
        'recherche la dernière ligne non vide de la colonne A de la feuille en cours
        With Worksheets(TblFeuilles(I))
 
            DerLig = .Cells(.Rows.Count, 1).End(xlUp).Row
 
        End With
 
        'boucle sur les valeurs à récupérer et les affecte à Fe en colonne A
        'à partir de A2 et les unes à la suite des autres
        With Fe
 
            For J = 1 To DerLig
 
               .Range("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1) = Worksheets(TblFeuilles(I)).Range("A" & J)
 
            Next J
 
        End With
 
    Next I
 
End Sub
Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h01.


 
 
 
 
Partenaires

Hébergement Web