copier des cellules d'une feuille sur une autre feuille
4 réponses
cinthia
Bonjour,
d=E9butante en VB, je me suis servie des macros que j'ai pu=20
r=E9cup=E9rer sur le net et partant de l=E0, j'ai bidouill=E9 pour=20
arriver =E0 mon r=E9sultat.
N=E9anmoins, dans certains cas, m=EAme en entrant texto=20
l'exemple donn=E9, =E7a ne marche pas chez moi.
Voici mon probl=E8me actuel :
j'ai une macro qui trouve sur la feuille 1 la plage de=20
cellules qui m'int=E9ressent (elle est variable).
Cette macro cr=E9e ensuite un certain nombre de feuilles=20
dans lesquelles je voudrais qu'elle recopie les cellules=20
s=E9lectionn=E9es pr=E9c=E9demment =E0 partir de la cellule A1.
Or, je n'y arrive pas ni en utilisant l'option "copy" ni=20
en faisant une boucle "for" et en disant telle cellule de=20
la nouvelle feuille =3D telle cellule de la feuille 1.
A chaque fois, la macro =E9choue et me dit "erreur d=E9finie=20
par l'application ou par l'objet".
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Dédé
Salut Cinthia !
Et si tu nous donnais le code en question, peut-être qu'on pourrait t'en proposer une version qui fonctionne ;-))
Salutations Dédé
-- Pour répondre, enlever le NOSPAM "cinthia" a écrit dans le message de news:0d3401c367dc$2ce706f0$ Bonjour, débutante en VB, je me suis servie des macros que j'ai pu récupérer sur le net et partant de là, j'ai bidouillé pour arriver à mon résultat. Néanmoins, dans certains cas, même en entrant texto l'exemple donné, ça ne marche pas chez moi.
Voici mon problème actuel : j'ai une macro qui trouve sur la feuille 1 la plage de cellules qui m'intéressent (elle est variable). Cette macro crée ensuite un certain nombre de feuilles dans lesquelles je voudrais qu'elle recopie les cellules sélectionnées précédemment à partir de la cellule A1. Or, je n'y arrive pas ni en utilisant l'option "copy" ni en faisant une boucle "for" et en disant telle cellule de la nouvelle feuille = telle cellule de la feuille 1.
A chaque fois, la macro échoue et me dit "erreur définie par l'application ou par l'objet".
Quelqu'un peut-il m'aider ?
Salut Cinthia !
Et si tu nous donnais le code en question, peut-être qu'on pourrait t'en
proposer une version qui fonctionne ;-))
Salutations
Dédé
--
Pour répondre, enlever le NOSPAM
"cinthia" <hello@yahoo.com> a écrit dans le message de
news:0d3401c367dc$2ce706f0$a101280a@phx.gbl...
Bonjour,
débutante en VB, je me suis servie des macros que j'ai pu
récupérer sur le net et partant de là, j'ai bidouillé pour
arriver à mon résultat.
Néanmoins, dans certains cas, même en entrant texto
l'exemple donné, ça ne marche pas chez moi.
Voici mon problème actuel :
j'ai une macro qui trouve sur la feuille 1 la plage de
cellules qui m'intéressent (elle est variable).
Cette macro crée ensuite un certain nombre de feuilles
dans lesquelles je voudrais qu'elle recopie les cellules
sélectionnées précédemment à partir de la cellule A1.
Or, je n'y arrive pas ni en utilisant l'option "copy" ni
en faisant une boucle "for" et en disant telle cellule de
la nouvelle feuille = telle cellule de la feuille 1.
A chaque fois, la macro échoue et me dit "erreur définie
par l'application ou par l'objet".
Et si tu nous donnais le code en question, peut-être qu'on pourrait t'en proposer une version qui fonctionne ;-))
Salutations Dédé
-- Pour répondre, enlever le NOSPAM "cinthia" a écrit dans le message de news:0d3401c367dc$2ce706f0$ Bonjour, débutante en VB, je me suis servie des macros que j'ai pu récupérer sur le net et partant de là, j'ai bidouillé pour arriver à mon résultat. Néanmoins, dans certains cas, même en entrant texto l'exemple donné, ça ne marche pas chez moi.
Voici mon problème actuel : j'ai une macro qui trouve sur la feuille 1 la plage de cellules qui m'intéressent (elle est variable). Cette macro crée ensuite un certain nombre de feuilles dans lesquelles je voudrais qu'elle recopie les cellules sélectionnées précédemment à partir de la cellule A1. Or, je n'y arrive pas ni en utilisant l'option "copy" ni en faisant une boucle "for" et en disant telle cellule de la nouvelle feuille = telle cellule de la feuille 1.
A chaque fois, la macro échoue et me dit "erreur définie par l'application ou par l'objet".
Quelqu'un peut-il m'aider ?
cinthia
Voilà mon code :
'CREATION AUTOMATIQUE DES FEUILLES des systèmes Sub creation()
' step 1 : trouver l'adresse de la cellule qui contient le mot "SYSTEM" Dim colonne_system, ligne_system As Integer Dim cell As Object
For Each cell In UsedRange If UCase(cell.Value) = "SYSTEM" Then colonne_system = cell.Column ligne_system = cell.Row End If Next cell
'step 2 : compter le nombre de sytèmes répertoriés Dim Nb_System As Integer
Nb_System = 0 For Each cell In Intersect(UsedRange, Columns (colonne_system)) 'on ne regarde que la colonne des systèmes 'on ne compte que les lignes non vides situées après la cellule de titre If cell.Row > ligne_system And cell.Value <> "" Then Nb_System = Nb_System + 1 Next cell
'pour vérification 'MsgBox Nb_System
'step 3: trouver le nombre de rubriques à copier Dim Nb_rubriq As Integer
Nb_rubriq = 0 For Each cell In Intersect(UsedRange, Rows (ligne_rubriques)) 'on ne regarde que la ligne des rubriques 'on ne compte que les cellules non vides situées après la cellule contenant "listes" (colonne1) If cell.Column > 1 And cell.Value <> "" Then Nb_rubriq = Nb_rubriq + 1 Next cell
'pour vérification 'MsgBox Nb_rubriq
'step 4 : ajouter le nombre de feuilles nécessaires pour avoir chaque système sur une feuille ' + leur attribue le nom du système et recopier la ligne des rubriques à partir de a1 Dim ajout_feuille, i As Integer Dim nom As String
ajout_feuille = 1 Do While ajout_feuille <= Nb_System Application.Worksheets.Add After:=Sheets.Item (Sheets.Count), Type:=xlWorksheet nom = Cells(ligne_system + ajout_feuille, colonne_system).Value Application.ActiveSheet.Name = nom ** For i = 1 To Nb_rubriq ** ActiveSheet.Cells(1, 1).Value = Sheets ("configuration").Cells(ligne_system + 1, 1 + i).Value ** Next i ajout_feuille = ajout_feuille + 1 Loop
End Sub
et queslques explications mon classeur ne comporte au départ qu'une feuille, renommée "configuration". Dans cette feuille, j'ai un tableau comportant sur une ligne les rubriques que je voudrais avoir sur toutes les premières lignes de mes nouvelles pages. L'une des rubriques étant SYSTEM. Sous la cellule SYSTEM (donc dans la même colonne), j'ai les noms des systèmes concernées qui deviennent les noms de mes nouvelles feuilles.
A l'exception des lignes devant lesquelles j'ai mis **, tout le reste fonctionnent (la création de nouvelles feuilles quelque soit le nombre et l'attribution du nom en fonction de ma colonne prédéfinie dans la feuille de configuration)
J'ai aussi fait des essais en séparant la partie copie dans une autre macro mais sans plus de résultat (celle-là, je ne l'ai plus en revanche).
Enfin, j'ai entré tout ce code sur la feuille vb de la feuille configuration. J'utilise Excel 2000. Je croise les doigts pour une solution. En tout cas, merci beaucoup
Voilà mon code :
'CREATION AUTOMATIQUE DES FEUILLES des systèmes
Sub creation()
' step 1 : trouver l'adresse de la cellule qui contient le
mot "SYSTEM"
Dim colonne_system, ligne_system As Integer
Dim cell As Object
For Each cell In UsedRange
If UCase(cell.Value) = "SYSTEM" Then
colonne_system = cell.Column
ligne_system = cell.Row
End If
Next cell
'step 2 : compter le nombre de sytèmes répertoriés
Dim Nb_System As Integer
Nb_System = 0
For Each cell In Intersect(UsedRange, Columns
(colonne_system))
'on ne regarde que la colonne des systèmes
'on ne compte que les lignes non vides situées après
la cellule de titre
If cell.Row > ligne_system And cell.Value <> "" Then
Nb_System = Nb_System + 1
Next cell
'pour vérification
'MsgBox Nb_System
'step 3: trouver le nombre de rubriques à copier
Dim Nb_rubriq As Integer
Nb_rubriq = 0
For Each cell In Intersect(UsedRange, Rows
(ligne_rubriques))
'on ne regarde que la ligne des rubriques
'on ne compte que les cellules non vides situées après
la cellule contenant "listes" (colonne1)
If cell.Column > 1 And cell.Value <> "" Then Nb_rubriq
= Nb_rubriq + 1
Next cell
'pour vérification
'MsgBox Nb_rubriq
'step 4 : ajouter le nombre de feuilles nécessaires pour
avoir chaque système sur une feuille
' + leur attribue le nom du système et recopier la ligne
des rubriques à partir de a1
Dim ajout_feuille, i As Integer
Dim nom As String
ajout_feuille = 1
Do While ajout_feuille <= Nb_System
Application.Worksheets.Add After:=Sheets.Item
(Sheets.Count), Type:=xlWorksheet
nom = Cells(ligne_system + ajout_feuille,
colonne_system).Value
Application.ActiveSheet.Name = nom
** For i = 1 To Nb_rubriq
** ActiveSheet.Cells(1, 1).Value = Sheets
("configuration").Cells(ligne_system + 1, 1 + i).Value
** Next i
ajout_feuille = ajout_feuille + 1
Loop
End Sub
et queslques explications
mon classeur ne comporte au départ qu'une feuille,
renommée "configuration".
Dans cette feuille, j'ai un tableau comportant sur une
ligne les rubriques que je voudrais avoir sur toutes les
premières lignes de mes nouvelles pages.
L'une des rubriques étant SYSTEM.
Sous la cellule SYSTEM (donc dans la même colonne), j'ai
les noms des systèmes concernées qui deviennent les noms
de mes nouvelles feuilles.
A l'exception des lignes devant lesquelles j'ai mis **,
tout le reste fonctionnent (la création de nouvelles
feuilles quelque soit le nombre et l'attribution du nom en
fonction de ma colonne prédéfinie dans la feuille de
configuration)
J'ai aussi fait des essais en séparant la partie copie
dans une autre macro mais sans plus de résultat (celle-là,
je ne l'ai plus en revanche).
Enfin, j'ai entré tout ce code sur la feuille vb de la
feuille configuration. J'utilise Excel 2000.
Je croise les doigts pour une solution. En tout cas, merci
beaucoup
'step 2 : compter le nombre de sytèmes répertoriés Dim Nb_System As Integer
Nb_System = 0 For Each cell In Intersect(UsedRange, Columns (colonne_system)) 'on ne regarde que la colonne des systèmes 'on ne compte que les lignes non vides situées après la cellule de titre If cell.Row > ligne_system And cell.Value <> "" Then Nb_System = Nb_System + 1 Next cell
'pour vérification 'MsgBox Nb_System
'step 3: trouver le nombre de rubriques à copier Dim Nb_rubriq As Integer
Nb_rubriq = 0 For Each cell In Intersect(UsedRange, Rows (ligne_rubriques)) 'on ne regarde que la ligne des rubriques 'on ne compte que les cellules non vides situées après la cellule contenant "listes" (colonne1) If cell.Column > 1 And cell.Value <> "" Then Nb_rubriq = Nb_rubriq + 1 Next cell
'pour vérification 'MsgBox Nb_rubriq
'step 4 : ajouter le nombre de feuilles nécessaires pour avoir chaque système sur une feuille ' + leur attribue le nom du système et recopier la ligne des rubriques à partir de a1 Dim ajout_feuille, i As Integer Dim nom As String
ajout_feuille = 1 Do While ajout_feuille <= Nb_System Application.Worksheets.Add After:=Sheets.Item (Sheets.Count), Type:=xlWorksheet nom = Cells(ligne_system + ajout_feuille, colonne_system).Value Application.ActiveSheet.Name = nom ** For i = 1 To Nb_rubriq ** ActiveSheet.Cells(1, 1).Value = Sheets ("configuration").Cells(ligne_system + 1, 1 + i).Value ** Next i ajout_feuille = ajout_feuille + 1 Loop
End Sub
et queslques explications mon classeur ne comporte au départ qu'une feuille, renommée "configuration". Dans cette feuille, j'ai un tableau comportant sur une ligne les rubriques que je voudrais avoir sur toutes les premières lignes de mes nouvelles pages. L'une des rubriques étant SYSTEM. Sous la cellule SYSTEM (donc dans la même colonne), j'ai les noms des systèmes concernées qui deviennent les noms de mes nouvelles feuilles.
A l'exception des lignes devant lesquelles j'ai mis **, tout le reste fonctionnent (la création de nouvelles feuilles quelque soit le nombre et l'attribution du nom en fonction de ma colonne prédéfinie dans la feuille de configuration)
J'ai aussi fait des essais en séparant la partie copie dans une autre macro mais sans plus de résultat (celle-là, je ne l'ai plus en revanche).
Enfin, j'ai entré tout ce code sur la feuille vb de la feuille configuration. J'utilise Excel 2000. Je croise les doigts pour une solution. En tout cas, merci beaucoup
Philippe.R
Bonsoir Cinthia, Si j'ai bien compris, il me semble que la première chose à faire serait de déplacer le code vers un module ordinaire . (Dans l'editeur, clic droit sur le projet, insertion / Module ; couper le code situé dans la feuille et le coller dans le module ; tester en pas à pas à l'aide de la touche F8) -- Amicales Salutations
Retirer A_S_ pour répondre. XL97 / XL2002 "cinthia" a écrit dans le message de news:0c1a01c367e2$1fcb68c0$ Voilà mon code :
'CREATION AUTOMATIQUE DES FEUILLES des systèmes Sub creation()
' step 1 : trouver l'adresse de la cellule qui contient le mot "SYSTEM" Dim colonne_system, ligne_system As Integer Dim cell As Object
For Each cell In UsedRange If UCase(cell.Value) = "SYSTEM" Then colonne_system = cell.Column ligne_system = cell.Row End If Next cell
'step 2 : compter le nombre de sytèmes répertoriés Dim Nb_System As Integer
Nb_System = 0 For Each cell In Intersect(UsedRange, Columns (colonne_system)) 'on ne regarde que la colonne des systèmes 'on ne compte que les lignes non vides situées après la cellule de titre If cell.Row > ligne_system And cell.Value <> "" Then Nb_System = Nb_System + 1 Next cell
'pour vérification 'MsgBox Nb_System
'step 3: trouver le nombre de rubriques à copier Dim Nb_rubriq As Integer
Nb_rubriq = 0 For Each cell In Intersect(UsedRange, Rows (ligne_rubriques)) 'on ne regarde que la ligne des rubriques 'on ne compte que les cellules non vides situées après la cellule contenant "listes" (colonne1) If cell.Column > 1 And cell.Value <> "" Then Nb_rubriq = Nb_rubriq + 1 Next cell
'pour vérification 'MsgBox Nb_rubriq
'step 4 : ajouter le nombre de feuilles nécessaires pour avoir chaque système sur une feuille ' + leur attribue le nom du système et recopier la ligne des rubriques à partir de a1 Dim ajout_feuille, i As Integer Dim nom As String
ajout_feuille = 1 Do While ajout_feuille <= Nb_System Application.Worksheets.Add After:=Sheets.Item (Sheets.Count), Type:=xlWorksheet nom = Cells(ligne_system + ajout_feuille, colonne_system).Value Application.ActiveSheet.Name = nom ** For i = 1 To Nb_rubriq ** ActiveSheet.Cells(1, 1).Value = Sheets ("configuration").Cells(ligne_system + 1, 1 + i).Value ** Next i ajout_feuille = ajout_feuille + 1 Loop
End Sub
et queslques explications mon classeur ne comporte au départ qu'une feuille, renommée "configuration". Dans cette feuille, j'ai un tableau comportant sur une ligne les rubriques que je voudrais avoir sur toutes les premières lignes de mes nouvelles pages. L'une des rubriques étant SYSTEM. Sous la cellule SYSTEM (donc dans la même colonne), j'ai les noms des systèmes concernées qui deviennent les noms de mes nouvelles feuilles.
A l'exception des lignes devant lesquelles j'ai mis **, tout le reste fonctionnent (la création de nouvelles feuilles quelque soit le nombre et l'attribution du nom en fonction de ma colonne prédéfinie dans la feuille de configuration)
J'ai aussi fait des essais en séparant la partie copie dans une autre macro mais sans plus de résultat (celle-là, je ne l'ai plus en revanche).
Enfin, j'ai entré tout ce code sur la feuille vb de la feuille configuration. J'utilise Excel 2000. Je croise les doigts pour une solution. En tout cas, merci beaucoup
Bonsoir Cinthia,
Si j'ai bien compris, il me semble que la première chose à faire serait de déplacer le code vers un
module ordinaire .
(Dans l'editeur, clic droit sur le projet, insertion / Module ; couper le code situé dans la feuille et
le coller dans le module ; tester en pas à pas à l'aide de la touche F8)
--
Amicales Salutations
A_S_rauphil@wanadoo.fr
Retirer A_S_ pour répondre.
XL97 / XL2002
"cinthia" <coucou@yahoo.com> a écrit dans le message de news:0c1a01c367e2$1fcb68c0$a401280a@phx.gbl...
Voilà mon code :
'CREATION AUTOMATIQUE DES FEUILLES des systèmes
Sub creation()
' step 1 : trouver l'adresse de la cellule qui contient le
mot "SYSTEM"
Dim colonne_system, ligne_system As Integer
Dim cell As Object
For Each cell In UsedRange
If UCase(cell.Value) = "SYSTEM" Then
colonne_system = cell.Column
ligne_system = cell.Row
End If
Next cell
'step 2 : compter le nombre de sytèmes répertoriés
Dim Nb_System As Integer
Nb_System = 0
For Each cell In Intersect(UsedRange, Columns
(colonne_system))
'on ne regarde que la colonne des systèmes
'on ne compte que les lignes non vides situées après
la cellule de titre
If cell.Row > ligne_system And cell.Value <> "" Then
Nb_System = Nb_System + 1
Next cell
'pour vérification
'MsgBox Nb_System
'step 3: trouver le nombre de rubriques à copier
Dim Nb_rubriq As Integer
Nb_rubriq = 0
For Each cell In Intersect(UsedRange, Rows
(ligne_rubriques))
'on ne regarde que la ligne des rubriques
'on ne compte que les cellules non vides situées après
la cellule contenant "listes" (colonne1)
If cell.Column > 1 And cell.Value <> "" Then Nb_rubriq
= Nb_rubriq + 1
Next cell
'pour vérification
'MsgBox Nb_rubriq
'step 4 : ajouter le nombre de feuilles nécessaires pour
avoir chaque système sur une feuille
' + leur attribue le nom du système et recopier la ligne
des rubriques à partir de a1
Dim ajout_feuille, i As Integer
Dim nom As String
ajout_feuille = 1
Do While ajout_feuille <= Nb_System
Application.Worksheets.Add After:=Sheets.Item
(Sheets.Count), Type:=xlWorksheet
nom = Cells(ligne_system + ajout_feuille,
colonne_system).Value
Application.ActiveSheet.Name = nom
** For i = 1 To Nb_rubriq
** ActiveSheet.Cells(1, 1).Value = Sheets
("configuration").Cells(ligne_system + 1, 1 + i).Value
** Next i
ajout_feuille = ajout_feuille + 1
Loop
End Sub
et queslques explications
mon classeur ne comporte au départ qu'une feuille,
renommée "configuration".
Dans cette feuille, j'ai un tableau comportant sur une
ligne les rubriques que je voudrais avoir sur toutes les
premières lignes de mes nouvelles pages.
L'une des rubriques étant SYSTEM.
Sous la cellule SYSTEM (donc dans la même colonne), j'ai
les noms des systèmes concernées qui deviennent les noms
de mes nouvelles feuilles.
A l'exception des lignes devant lesquelles j'ai mis **,
tout le reste fonctionnent (la création de nouvelles
feuilles quelque soit le nombre et l'attribution du nom en
fonction de ma colonne prédéfinie dans la feuille de
configuration)
J'ai aussi fait des essais en séparant la partie copie
dans une autre macro mais sans plus de résultat (celle-là,
je ne l'ai plus en revanche).
Enfin, j'ai entré tout ce code sur la feuille vb de la
feuille configuration. J'utilise Excel 2000.
Je croise les doigts pour une solution. En tout cas, merci
beaucoup
Bonsoir Cinthia, Si j'ai bien compris, il me semble que la première chose à faire serait de déplacer le code vers un module ordinaire . (Dans l'editeur, clic droit sur le projet, insertion / Module ; couper le code situé dans la feuille et le coller dans le module ; tester en pas à pas à l'aide de la touche F8) -- Amicales Salutations
Retirer A_S_ pour répondre. XL97 / XL2002 "cinthia" a écrit dans le message de news:0c1a01c367e2$1fcb68c0$ Voilà mon code :
'CREATION AUTOMATIQUE DES FEUILLES des systèmes Sub creation()
' step 1 : trouver l'adresse de la cellule qui contient le mot "SYSTEM" Dim colonne_system, ligne_system As Integer Dim cell As Object
For Each cell In UsedRange If UCase(cell.Value) = "SYSTEM" Then colonne_system = cell.Column ligne_system = cell.Row End If Next cell
'step 2 : compter le nombre de sytèmes répertoriés Dim Nb_System As Integer
Nb_System = 0 For Each cell In Intersect(UsedRange, Columns (colonne_system)) 'on ne regarde que la colonne des systèmes 'on ne compte que les lignes non vides situées après la cellule de titre If cell.Row > ligne_system And cell.Value <> "" Then Nb_System = Nb_System + 1 Next cell
'pour vérification 'MsgBox Nb_System
'step 3: trouver le nombre de rubriques à copier Dim Nb_rubriq As Integer
Nb_rubriq = 0 For Each cell In Intersect(UsedRange, Rows (ligne_rubriques)) 'on ne regarde que la ligne des rubriques 'on ne compte que les cellules non vides situées après la cellule contenant "listes" (colonne1) If cell.Column > 1 And cell.Value <> "" Then Nb_rubriq = Nb_rubriq + 1 Next cell
'pour vérification 'MsgBox Nb_rubriq
'step 4 : ajouter le nombre de feuilles nécessaires pour avoir chaque système sur une feuille ' + leur attribue le nom du système et recopier la ligne des rubriques à partir de a1 Dim ajout_feuille, i As Integer Dim nom As String
ajout_feuille = 1 Do While ajout_feuille <= Nb_System Application.Worksheets.Add After:=Sheets.Item (Sheets.Count), Type:=xlWorksheet nom = Cells(ligne_system + ajout_feuille, colonne_system).Value Application.ActiveSheet.Name = nom ** For i = 1 To Nb_rubriq ** ActiveSheet.Cells(1, 1).Value = Sheets ("configuration").Cells(ligne_system + 1, 1 + i).Value ** Next i ajout_feuille = ajout_feuille + 1 Loop
End Sub
et queslques explications mon classeur ne comporte au départ qu'une feuille, renommée "configuration". Dans cette feuille, j'ai un tableau comportant sur une ligne les rubriques que je voudrais avoir sur toutes les premières lignes de mes nouvelles pages. L'une des rubriques étant SYSTEM. Sous la cellule SYSTEM (donc dans la même colonne), j'ai les noms des systèmes concernées qui deviennent les noms de mes nouvelles feuilles.
A l'exception des lignes devant lesquelles j'ai mis **, tout le reste fonctionnent (la création de nouvelles feuilles quelque soit le nombre et l'attribution du nom en fonction de ma colonne prédéfinie dans la feuille de configuration)
J'ai aussi fait des essais en séparant la partie copie dans une autre macro mais sans plus de résultat (celle-là, je ne l'ai plus en revanche).
Enfin, j'ai entré tout ce code sur la feuille vb de la feuille configuration. J'utilise Excel 2000. Je croise les doigts pour une solution. En tout cas, merci beaucoup
cinthia
Merci beaucoup J'ai tout copié dans un module. J'ai précisé la feuille à copier et ça marche sans problème ! (ou presque puisque j'avais oublié 2 ou 3 petites choses) Du coup, je peux avoir une feuille qui me sert pour la configuration. Merci beaucoup.
Pour ceux que ça intéresse, voici le code final, placé dans un module :
'CREATION AUTOMATIQUE DES FEUILLES des systèmes Sub creation()
' step 1 : trouver l'adresse de la cellule qui contient le mot "SYSTEM" Dim colonne_system, ligne_system As Integer Dim cell As Object
For Each cell In Worksheets("configuration").UsedRange If UCase(cell.Value) = "SYSTEM" Then colonne_system = cell.Column ligne_system = cell.Row End If Next cell
'step 2 : compter le nombre de sytèmes répertoriés Dim Nb_System As Integer
Nb_System = 0 For Each cell In Intersect(Worksheets ("configuration").UsedRange, Worksheets ("configuration").Columns(colonne_system)) 'on ne regarde que la colonne des systèmes 'on ne compte que les lignes non vides situées après la cellule de titre If cell.Row > ligne_system And cell.Value <> "" Then Nb_System = Nb_System + 1 Next cell
'pour vérification 'MsgBox Nb_System
'step 3: trouver le nombre de rubriques Dim Nb_rubriq As Integer
Nb_rubriq = 0 For Each cell In Intersect(Worksheets ("configuration").UsedRange, Worksheets ("configuration").Rows(ligne_system)) 'on ne regarde que la ligne des rubriques 'on ne compte que les cellules non vides situées après la cellule contenant "listes" (colonne1) If cell.Column > 1 And cell.Value <> "" Then Nb_rubriq = Nb_rubriq + 1 Next cell
'pour vérification 'MsgBox Nb_rubriq
'step 4: copier les cellules dans le presse-papier Worksheets("configuration").Cells(ligne_system, 2).Resize (1, Nb_rubriq).Copy
'step 5 : ajouter le nombre de feuilles nécessaires pour avoir chaque système sur une feuille ' + leur attribue le nom du système Dim ajout_feuille As Integer Dim nom As String
ajout_feuille = 1 Do While ajout_feuille <= Nb_System Application.Worksheets.Add After:=Sheets.Item (Sheets.Count), Type:=xlWorksheet nom = Worksheets("configuration").Cells(ligne_system + ajout_feuille, colonne_system).Value Application.ActiveSheet.Name = nom ActiveSheet.Paste ajout_feuille = ajout_feuille + 1 Loop
End Sub
Ca permet d'avoir une feuille de configuration sur laquelle sont (entre autres) définies -les différentes rubriques que l'on veut en tête de chaque colonne sur les autes feuilles et -les noms que doivent avoir ces feuilles Enfin, ça crée ces feuilles comme il faut
Voilà, encore merci Cinthia
Merci beaucoup
J'ai tout copié dans un module.
J'ai précisé la feuille à copier et ça marche sans
problème ! (ou presque puisque j'avais oublié 2 ou 3
petites choses)
Du coup, je peux avoir une feuille qui me sert pour la
configuration. Merci beaucoup.
Pour ceux que ça intéresse, voici le code final, placé
dans un module :
'CREATION AUTOMATIQUE DES FEUILLES des systèmes
Sub creation()
' step 1 : trouver l'adresse de la cellule qui contient le
mot "SYSTEM"
Dim colonne_system, ligne_system As Integer
Dim cell As Object
For Each cell In Worksheets("configuration").UsedRange
If UCase(cell.Value) = "SYSTEM" Then
colonne_system = cell.Column
ligne_system = cell.Row
End If
Next cell
'step 2 : compter le nombre de sytèmes répertoriés
Dim Nb_System As Integer
Nb_System = 0
For Each cell In Intersect(Worksheets
("configuration").UsedRange, Worksheets
("configuration").Columns(colonne_system))
'on ne regarde que la colonne des systèmes
'on ne compte que les lignes non vides situées après
la cellule de titre
If cell.Row > ligne_system And cell.Value <> "" Then
Nb_System = Nb_System + 1
Next cell
'pour vérification
'MsgBox Nb_System
'step 3: trouver le nombre de rubriques
Dim Nb_rubriq As Integer
Nb_rubriq = 0
For Each cell In Intersect(Worksheets
("configuration").UsedRange, Worksheets
("configuration").Rows(ligne_system))
'on ne regarde que la ligne des rubriques
'on ne compte que les cellules non vides situées après
la cellule contenant "listes" (colonne1)
If cell.Column > 1 And cell.Value <> "" Then Nb_rubriq
= Nb_rubriq + 1
Next cell
'pour vérification
'MsgBox Nb_rubriq
'step 4: copier les cellules dans le presse-papier
Worksheets("configuration").Cells(ligne_system, 2).Resize
(1, Nb_rubriq).Copy
'step 5 : ajouter le nombre de feuilles nécessaires pour
avoir chaque système sur une feuille
' + leur attribue le nom du système
Dim ajout_feuille As Integer
Dim nom As String
ajout_feuille = 1
Do While ajout_feuille <= Nb_System
Application.Worksheets.Add After:=Sheets.Item
(Sheets.Count), Type:=xlWorksheet
nom = Worksheets("configuration").Cells(ligne_system +
ajout_feuille, colonne_system).Value
Application.ActiveSheet.Name = nom
ActiveSheet.Paste
ajout_feuille = ajout_feuille + 1
Loop
End Sub
Ca permet d'avoir une feuille de configuration sur
laquelle sont (entre autres) définies
-les différentes rubriques que l'on veut en tête de chaque
colonne sur les autes feuilles et
-les noms que doivent avoir ces feuilles
Enfin, ça crée ces feuilles comme il faut
Merci beaucoup J'ai tout copié dans un module. J'ai précisé la feuille à copier et ça marche sans problème ! (ou presque puisque j'avais oublié 2 ou 3 petites choses) Du coup, je peux avoir une feuille qui me sert pour la configuration. Merci beaucoup.
Pour ceux que ça intéresse, voici le code final, placé dans un module :
'CREATION AUTOMATIQUE DES FEUILLES des systèmes Sub creation()
' step 1 : trouver l'adresse de la cellule qui contient le mot "SYSTEM" Dim colonne_system, ligne_system As Integer Dim cell As Object
For Each cell In Worksheets("configuration").UsedRange If UCase(cell.Value) = "SYSTEM" Then colonne_system = cell.Column ligne_system = cell.Row End If Next cell
'step 2 : compter le nombre de sytèmes répertoriés Dim Nb_System As Integer
Nb_System = 0 For Each cell In Intersect(Worksheets ("configuration").UsedRange, Worksheets ("configuration").Columns(colonne_system)) 'on ne regarde que la colonne des systèmes 'on ne compte que les lignes non vides situées après la cellule de titre If cell.Row > ligne_system And cell.Value <> "" Then Nb_System = Nb_System + 1 Next cell
'pour vérification 'MsgBox Nb_System
'step 3: trouver le nombre de rubriques Dim Nb_rubriq As Integer
Nb_rubriq = 0 For Each cell In Intersect(Worksheets ("configuration").UsedRange, Worksheets ("configuration").Rows(ligne_system)) 'on ne regarde que la ligne des rubriques 'on ne compte que les cellules non vides situées après la cellule contenant "listes" (colonne1) If cell.Column > 1 And cell.Value <> "" Then Nb_rubriq = Nb_rubriq + 1 Next cell
'pour vérification 'MsgBox Nb_rubriq
'step 4: copier les cellules dans le presse-papier Worksheets("configuration").Cells(ligne_system, 2).Resize (1, Nb_rubriq).Copy
'step 5 : ajouter le nombre de feuilles nécessaires pour avoir chaque système sur une feuille ' + leur attribue le nom du système Dim ajout_feuille As Integer Dim nom As String
ajout_feuille = 1 Do While ajout_feuille <= Nb_System Application.Worksheets.Add After:=Sheets.Item (Sheets.Count), Type:=xlWorksheet nom = Worksheets("configuration").Cells(ligne_system + ajout_feuille, colonne_system).Value Application.ActiveSheet.Name = nom ActiveSheet.Paste ajout_feuille = ajout_feuille + 1 Loop
End Sub
Ca permet d'avoir une feuille de configuration sur laquelle sont (entre autres) définies -les différentes rubriques que l'on veut en tête de chaque colonne sur les autes feuilles et -les noms que doivent avoir ces feuilles Enfin, ça crée ces feuilles comme il faut