Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

script en vb gestion de notes pour Excel 2002

2 réponses
Avatar
Marine22
Bonsoir,

Sous Excel 2002, j'essaie avec un script en Visual Basic de recopier
des données d'une feuilles bilan vers les feuilles bulletinEtudiant
(onglet au nom de chaque étudiant)
Pour l'instant j'arrive à créer le nombre de bulletins étudiants
nécessaires avec l'onglet de chaque feuille au nom de l'étudiant avec
ce script :

Sub InsererFeuillesEtudiant2()
'ce script fonctionne'
Dim i As Integer
Dim etudiant(3) As Range
'Dès lors que toutes les variables sont définies, les feuilles
sont créées automatiquement et comporte le nom de l'étudiant dans
l'onglet de la feuille'
Set etudiant(1) = Sheets("bilaninstitutions").Range("A13")
Set etudiant(2) = Sheets("bilaninstitutions").Range("A14")
Set etudiant(3) = Sheets("bilaninstitutions").Range("A15")
For i = 1 To 3
'le bulletin est copié après la feuille bulletin sur x feuilles
correspondant au nombre d'étudiant et les onglets sont renommés en
fonction du nom des étudiants'
Sheets("bulletin").copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = etudiant(i)
Next
End Sub



Je peux également mettre les données d'un étudiant sur une feuille
avec ce script :



Sub InsererMoyennePourUnEtudiant()
'ce script copie B13:K13 de bilaninstitutions vers La feuille Dupond
A E13:E22'
Dim MyCell As Range, TwoCell As Range, TreeCell As Range

For Each MyCell In Worksheets("bilaninstitutions").Range("B13:J13")
Sheets("bilaninstitutions").Select
Range("B13:J13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E13:E21").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True

For Each TwoCell In Worksheets("bilaninstitutions").Range("L13:S13")
Sheets("bilaninstitutions").Select
Range("L13:S13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E27:E34").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True

For Each TreeCell In Worksheets("bilaninstitutions").Range("U13:V13")
Sheets("bilaninstitutions").Select
Range("U13:V13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E40:E41").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True

Next TreeCell
Next TwoCell
Next MyCell

Sheets("bilaninstitutions").Select
Range("K13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E22").Select
Selection.PasteSpecial xlPasteValues

Sheets("bilaninstitutions").Select
Range("T13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E35").Select
Selection.PasteSpecial xlPasteValues

Sheets("bilaninstitutions").Select
Range("W13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E42").Select
Selection.PasteSpecial xlPasteValues


End Sub


En revanche, je n'arrive pas à mettre les données de la feuille bilan
pour chaque étudiant sur chaque feuille bulletin à son nom. Qui
pourrait me suggérer des pistes à suivre ?


Merci d'avance,
Marine

2 réponses

Avatar
Patrice Henrio
Il me semble qu'il s'agit plutôt d'une macro en VBA (Visual Basic
Application) et non d'un script.

On va essayer de décortiquer ton code

Si on se contente de ce qui est dit : copier B13:K13 de 'bilaninstitutions'
vers E13:E22 de Dupond_A

Voici comment je ferai
Dim C as range, Ligne as long
Ligne
For each C in Sheets("bilaninstitutions").Range("B13:K13")
Sheets("Dupont A").Cells(Ligne,5)=C
Ligne=Ligne+1
Next C


Si on veut automatiser tpus les étudiants (trois dans ton exemple)

Dim C as range, Etudiant as range, Ligne as long

For each étudiant in Sheets("bilaninstitution").range("A13:A15")
Ligne
For each C in Sheets("bilaninstitutions").Range("B13:K13")
Sheets(étudiant.Value).Cells(Ligne,5)=C
Ligne=Ligne+1
Next C
Next étudiant

Si tu veux te débarasser de la connaissanc edu nombre d'étudiants, tu nommes
la partie de la feuille contenant l'ensemble des noms de tes étudiants
"étudiants" : tu sélectionnes la zone et tu choisis "Insérer/Nom/Définir"
Ensuite le code s'écrit

Dim C as range, Etudiant as range, Ligne as long

For each étudiant in range("étudiants")
Ligne
For each C in Sheets("bilaninstitutions").Range("B13:K13")
Sheets(étudiant.Value).Cells(Ligne,5)=C
Ligne=Ligne+1
Next C
Next étudiant


Je n'ai pas très bien compris la suite des opérations.

Tu peux m'envoyer ton fichier Excel en l'état que je puisse regrader de plus
près.

Salut et bonne année.


"Marine22" a écrit dans le message de news:

Bonsoir,

Sous Excel 2002, j'essaie avec un script en Visual Basic de recopier
des données d'une feuilles bilan vers les feuilles bulletinEtudiant
(onglet au nom de chaque étudiant)
Pour l'instant j'arrive à créer le nombre de bulletins étudiants
nécessaires avec l'onglet de chaque feuille au nom de l'étudiant avec
ce script :

Sub InsererFeuillesEtudiant2()
'ce script fonctionne'
Dim i As Integer
Dim etudiant(3) As Range
'Dès lors que toutes les variables sont définies, les feuilles
sont créées automatiquement et comporte le nom de l'étudiant dans
l'onglet de la feuille'
Set etudiant(1) = Sheets("bilaninstitutions").Range("A13")
Set etudiant(2) = Sheets("bilaninstitutions").Range("A14")
Set etudiant(3) = Sheets("bilaninstitutions").Range("A15")
For i = 1 To 3
'le bulletin est copié après la feuille bulletin sur x feuilles
correspondant au nombre d'étudiant et les onglets sont renommés en
fonction du nom des étudiants'
Sheets("bulletin").copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = etudiant(i)
Next
End Sub



Je peux également mettre les données d'un étudiant sur une feuille
avec ce script :



Sub InsererMoyennePourUnEtudiant()
'ce script copie B13:K13 de bilaninstitutions vers La feuille Dupond
A E13:E22'
Dim MyCell As Range, TwoCell As Range, TreeCell As Range

For Each MyCell In Worksheets("bilaninstitutions").Range("B13:J13")
Sheets("bilaninstitutions").Select
Range("B13:J13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E13:E21").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True

For Each TwoCell In Worksheets("bilaninstitutions").Range("L13:S13")
Sheets("bilaninstitutions").Select
Range("L13:S13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E27:E34").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True

For Each TreeCell In Worksheets("bilaninstitutions").Range("U13:V13")
Sheets("bilaninstitutions").Select
Range("U13:V13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E40:E41").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True

Next TreeCell
Next TwoCell
Next MyCell

Sheets("bilaninstitutions").Select
Range("K13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E22").Select
Selection.PasteSpecial xlPasteValues

Sheets("bilaninstitutions").Select
Range("T13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E35").Select
Selection.PasteSpecial xlPasteValues

Sheets("bilaninstitutions").Select
Range("W13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E42").Select
Selection.PasteSpecial xlPasteValues


End Sub


En revanche, je n'arrive pas à mettre les données de la feuille bilan
pour chaque étudiant sur chaque feuille bulletin à son nom. Qui
pourrait me suggérer des pistes à suivre ?


Merci d'avance,
Marine



Avatar
Marine22
Bonsoir,

Je te transmets le fichier sur ta messagerie.
Merci beaucoup pour l'aide et Bonne année.
Marine





Le Sat, 31 Dec 2005 13:38:27 +0100, "Patrice Henrio"
a écrit :

Il me semble qu'il s'agit plutôt d'une macro en VBA (Visual Basic
Application) et non d'un script.

On va essayer de décortiquer ton code

Si on se contente de ce qui est dit : copier B13:K13 de 'bilaninstitutions'
vers E13:E22 de Dupond_A

Voici comment je ferai
Dim C as range, Ligne as long
Ligne
For each C in Sheets("bilaninstitutions").Range("B13:K13")
Sheets("Dupont A").Cells(Ligne,5)=C
Ligne=Ligne+1
Next C


Si on veut automatiser tpus les étudiants (trois dans ton exemple)

Dim C as range, Etudiant as range, Ligne as long

For each étudiant in Sheets("bilaninstitution").range("A13:A15")
Ligne
For each C in Sheets("bilaninstitutions").Range("B13:K13")
Sheets(étudiant.Value).Cells(Ligne,5)=C
Ligne=Ligne+1
Next C
Next étudiant

Si tu veux te débarasser de la connaissanc edu nombre d'étudiants, tu nommes
la partie de la feuille contenant l'ensemble des noms de tes étudiants
"étudiants" : tu sélectionnes la zone et tu choisis "Insérer/Nom/Définir"
Ensuite le code s'écrit

Dim C as range, Etudiant as range, Ligne as long

For each étudiant in range("étudiants")
Ligne
For each C in Sheets("bilaninstitutions").Range("B13:K13")
Sheets(étudiant.Value).Cells(Ligne,5)=C
Ligne=Ligne+1
Next C
Next étudiant


Je n'ai pas très bien compris la suite des opérations.

Tu peux m'envoyer ton fichier Excel en l'état que je puisse regrader de plus
près.

Salut et bonne année.


"Marine22" a écrit dans le message de news:

Bonsoir,

Sous Excel 2002, j'essaie avec un script en Visual Basic de recopier
des données d'une feuilles bilan vers les feuilles bulletinEtudiant
(onglet au nom de chaque étudiant)
Pour l'instant j'arrive à créer le nombre de bulletins étudiants
nécessaires avec l'onglet de chaque feuille au nom de l'étudiant avec
ce script :

Sub InsererFeuillesEtudiant2()
'ce script fonctionne'
Dim i As Integer
Dim etudiant(3) As Range
'Dès lors que toutes les variables sont définies, les feuilles
sont créées automatiquement et comporte le nom de l'étudiant dans
l'onglet de la feuille'
Set etudiant(1) = Sheets("bilaninstitutions").Range("A13")
Set etudiant(2) = Sheets("bilaninstitutions").Range("A14")
Set etudiant(3) = Sheets("bilaninstitutions").Range("A15")
For i = 1 To 3
'le bulletin est copié après la feuille bulletin sur x feuilles
correspondant au nombre d'étudiant et les onglets sont renommés en
fonction du nom des étudiants'
Sheets("bulletin").copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = etudiant(i)
Next
End Sub



Je peux également mettre les données d'un étudiant sur une feuille
avec ce script :



Sub InsererMoyennePourUnEtudiant()
'ce script copie B13:K13 de bilaninstitutions vers La feuille Dupond
A E13:E22'
Dim MyCell As Range, TwoCell As Range, TreeCell As Range

For Each MyCell In Worksheets("bilaninstitutions").Range("B13:J13")
Sheets("bilaninstitutions").Select
Range("B13:J13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E13:E21").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True

For Each TwoCell In Worksheets("bilaninstitutions").Range("L13:S13")
Sheets("bilaninstitutions").Select
Range("L13:S13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E27:E34").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True

For Each TreeCell In Worksheets("bilaninstitutions").Range("U13:V13")
Sheets("bilaninstitutions").Select
Range("U13:V13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E40:E41").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True

Next TreeCell
Next TwoCell
Next MyCell

Sheets("bilaninstitutions").Select
Range("K13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E22").Select
Selection.PasteSpecial xlPasteValues

Sheets("bilaninstitutions").Select
Range("T13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E35").Select
Selection.PasteSpecial xlPasteValues

Sheets("bilaninstitutions").Select
Range("W13").Select
Selection.copy
Sheets("Dupond A").Select
Range("E42").Select
Selection.PasteSpecial xlPasteValues


End Sub


En revanche, je n'arrive pas à mettre les données de la feuille bilan
pour chaque étudiant sur chaque feuille bulletin à son nom. Qui
pourrait me suggérer des pistes à suivre ?


Merci d'avance,
Marine