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 02/09/2011, 08h21   #1
Membre du Club
 
Inscription : mai 2005
Messages : 162
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 162
Points : 58
Points : 58
Envoyer un message via MSN à forzaxelah
Par défaut Un nombre X sur 1 onglet = X lignes sur un autre onglet

Bonjour, j'aurais besoin d'aide.

J'ai un onglet avec le tableau suivant:

NOM-----------NOMBRE
Carotte------------8


Je voudrais que dans l'onglet suivant on ait:

NOM------------NOMBRE
carotte------------1
carotte------------1
carotte------------1
carotte------------1
carotte------------1
carotte------------1
carotte------------1
carotte------------1


Donc qu'on ait 8 lignes.

Pouvez vous me dire comment faire?

merci.
forzaxelah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 09h03   #2
Membre du Club
 
Inscription : mai 2005
Messages : 162
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 162
Points : 58
Points : 58
Envoyer un message via MSN à forzaxelah
Bonjour,
j'ai du mal m'exprimer mais ce n'est pas le nombre de lignes ou somme de lignes que je veux.

C'est une création de lignes préremplies en fonction d'un chiffre que l'on aurait préalablement rempli dans une cellule.

Dans mon exemple, le fait d'avoir mis 8 sur la ligne "carotte" va donc créer dans un autre onglet 8 lignes "carottes".

Est-ce plus clair?

merci
forzaxelah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 09h44   #3
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour,

Voici une solution.
J’ai volontairement décomposé le code pour que tu puisses voir toutes les phases utiles.

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
Option Explicit
Sub CreationLignes()
Dim LigneO1 As Long 'Numéro de ligne à lire dans l'onglet 1
Dim ColNomO1 As Integer 'Numéro de colonne correspondant au NOM dans l'onglet 1
Dim LigneO2 As Long 'Première ligne où écrire dans l'onglet 2
Dim ColNomO2 As Integer 'Numéro de colonne correspondant au NOM dans l'onglet 2
Dim NbLignes As Long 'Nombre de lignes à créer dans l'onglet 2
Dim Nom As String 'Nom à reporter dans l'onglet 2
Dim i As Long
Dim Ws As Worksheet 'Feuille source : Onglet 1
Dim Wc As Worksheet 'Feuille cible : Onglet 2
 
    Set Ws = Worksheets("Feuil1")
    Set Wc = Worksheets("Feuil2")
    LigneO1 = 2
    ColNomO1 = 1
    LigneO2 = 2
    ColNomO2 = 1
    'Lecture de la valeur correspondant au NOM dans l'onglet 1
    Nom = Ws.Cells(LigneO1, ColNomO1)
    'Lecture de la valeur correspondant au nombre de lignes à créer
    NbLignes = Ws.Cells(LigneO1, ColNomO1 + 1)
    'Création des lignes dans l'onglet 2
    For i = 0 To NbLignes - 1
        Wc.Cells(LigneO2 + i, ColNomO2) = Nom
        Wc.Cells(LigneO2 + i, ColNomO2 + 1) = 1
    Next i
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 10h44   #4
Membre chevronné
 
Inscription : octobre 2006
Messages : 541
Détails du profil
Informations personnelles :
Localisation : France, Ardèche (Rhône Alpes)

Informations forums :
Inscription : octobre 2006
Messages : 541
Points : 760
Points : 760
bonjour,

sans VBA
dans feuil1
carotte dans A2, nombre en B2

dans feuil2 en A2,écrire
Code :
=SI(LIGNE()-1<=Feuil1!B$2;Feuil1!A$2;"")
tirer vers le bas jusqu'au nombre maximum

si par ex, on commence en feuil2!A43 on aura
Code :
=SI(LIGNE()-42<=Feuil1!B$2;Feuil1!A$2;"")
Re,

et si tu tiens à du VBA, pas besoin de boucle

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub dupliquer_nfois()
Dim nom As String, nbre As Integer
Dim lig As Long, col As Integer
 
With Sheets(1)
     nom = .Range("A2")
     nbre = .Range("B2")
End With
 
With Sheets(2)
     col = 1 'colonne de restitution
     lig = 1 'ligne de restitution
     .Range(Cells(lig, col), Cells(lig + nbre - 1, col)) = nom
End With
End Sub
__________________
Michel_M
Michel_M 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 18h37.


 
 
 
 
Partenaires

Hébergement Web