Simplifier l'instruction

Bonjour à tous,

Je débute en VBA.

Au lieu d'instruire ca ?

  • Worksheets("Bulletin").Range("C3").Value = Worksheets("Gestion des personnels").Range("C7").Value
    Worksheets("Bulletin").Range("D3").Value = Worksheets("Gestion des personnels").Range("C8").Value
    Worksheets("Bulletin").Range("E3").Value = Worksheets("Gestion des personnels").Range("C9").Value
    Worksheets("Bulletin").Range("F3").Value = Worksheets("Gestion des personnels").Range("C10").Value
    Worksheets("Bulletin").Range("G3").Value = Worksheets("Gestion des personnels").Range("C11").Value
    Worksheets("Bulletin").Range("H3").Value = Worksheets("Gestion des personnels").Range("C12").Value
    Worksheets("Bulletin").Range("I3").Value = Worksheets("Gestion des personnels").Range("C13").Value
    Worksheets("Bulletin").Range("J3").Value = Worksheets("Gestion des personnels").Range("C14").Value
    Worksheets("Bulletin").Range("K3").Value = Worksheets("Gestion des personnels").Range("C15").Value
    Worksheets("Bulletin").Range("L3").Value = Worksheets("Gestion des personnels").Range("C16").Value
    Worksheets("Bulletin").Range("M3").Value = Worksheets("Gestion des personnels").Range("C17").Value
    Worksheets("Bulletin").Range("N3").Value = Worksheets("Gestion des personnels").Range("C18").Value
    Worksheets("Bulletin").Range("O3").Value = Worksheets("Gestion des personnels").Range("C19").Value
    Worksheets("Bulletin").Range("P3").Value = Worksheets("Gestion des personnels").Range("C20").Value
    Worksheets("Bulletin").Range("Q3").Value = Worksheets("Gestion des personnels").Range("C21").Value
    Worksheets("Bulletin").Range("R3").Value = Worksheets("Gestion des personnels").Range("C22").Value

N'y a-t-il pas un moyen avec des variables ?

Je débute aussi au niveau du vocabulaire; mais appelons un chat un chat lol

Merci

Bonjour,

Un essai ...

Sub RiderSpy()
Dim Sh1 As Worksheet
Dim X As Integer

    Set Sh1 = Worksheets("Gestion des personnels")

    With Worksheets("Bulletin")
        For X = 3 To 18
            .Cells(3, X).Value = Sh1.Cells(X + 4, "C").Value
        Next X
    End With
End Sub

ric

Bonjour,

Simplement sur une ligne :

Worksheets("Bulletin").Range("C3:R3").Value = Application.Transpose(Worksheets("Gestion des personnels").Range("C7:C22").Value)

Bonjour,

Une solution avec le copier, coller - transposé utilisé avec l'éditeur de macro. (Qui permet de sauver pas mal de situation)

Sub Macro2()

Sheets("Gestion des personnels").Select

Range("C7:C22").Select

Selection.Copy

Sheets("Bulletin").Select

Range("C3").Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

End Sub

Cordialement.

Bonjour ric,

Ok ca marche merci,

Je ne connais pas le "Dim Sh as Worksheet"

Apres le reste j'ai compris.

Au début j’étais partie sur ça:

[list=]Sub test()
Dim X As Integer
For X = 3 To 43
Worksheets("Bulletin").Range("X:X").Value = Worksheets("Gestion des personnels").Range("X:X+3").Value
End Sub[/list]

Mais c'ets pas bon en language.

Par ailleurs pour garder la meme fond de remplissage ? .font mais je le place ou ?

Re, ou encore :

Option Explicit
Sub x()
Dim t As Variant
Dim c As Range
  t = Worksheets("Gestion des personnels").Range("C7:C22").Value
  Set c = Worksheets("Bulletin").Range("C3")
  c.Resize(1, UBound(t)) = Application.Transpose(t)
End Sub

@Zebulon

Les Select et Sélection sont à bannir du code VBA : c'est la principale sourve de problème dans les macro/

Et il faut encore le répéter tous les jours !

Re re,

Pour conserver les formats :

Option Explicit
Sub x()
Dim r As Range
Dim c As Range
  Set r = Worksheets("Gestion des personnels").Range("C7:C22")
  Set c = Worksheets("Bulletin").Range("C3")
  r.Copy
  c.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
  c.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
  Application.CutCopyMode = False
End Sub

@ Zebulon : ou j'avais essayer d'enregistreur de macro mais je coincé parce que le fond de remplissage ne se garder pas.

@ Patrice : ok je vais essayer ca et j'aime bien comprendre le code aussi. J'apprends le vocabulaire en meme temps pourquoi le

Dim r as range

et

Dim c as range

Re re,

Pour conserver les formats :

Option Explicit
Sub x()
Dim r As Range
Dim c As Range
  Set r = Worksheets("Gestion des personnels").Range("C7:C22")
  Set c = Worksheets("Bulletin").Range("C3")
  r.Copy
  c.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
  c.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
  Application.CutCopyMode = False
End Sub

Patrice, ok ca fonctionne le transpose:=True c'ets bon pour moi

En revanche il me manque deux choses :

1- le fond de remplissage et le meme que "C3" de "bulletin" pour toutes les cellules copier

2 - le format souhaité au collage serait alignement 90.

Re,

@Patrice33740 Merci pour l'info, c'est noté. Je tacherai d'en tenir compte à l'avenir.

Cordialement.

[quote=riderpsy post_id=777968 time=1562425487 user_id=49709]

Patrice, ok ca fonctionne le transpose:=True c'ets bon pour moi

En revanche il me manque deux choses :

1- le fond de remplissage et le meme que "C3" de "bulletin" pour toutes les cellules copier

2 - le format souhaité au collage serait alignement 90.

C'est pas normal que les formats sources ne soit reproduits sur la destination, as-tu bien copié les 2 pastespécial ?

[quote=Patrice33740 post_id=777974 time=1562426924 user_id=29641]

Patrice, ok ca fonctionne le transpose:=True c'ets bon pour moi

En revanche il me manque deux choses :

1- le fond de remplissage et le meme que "C3" de "bulletin" pour toutes les cellules copier

2 - le format souhaité au collage serait alignement 90.

C'est pas normal que les formats sources ne soit reproduits sur la destination, as-tu bien copié les 2 pastespécial ?

Oui, j'ai bien copier les PasteSpecial

c.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

c.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

[quote=riderpsy post_id=777977 time=1562427094 user_id=49709]

C'est pas normal que les formats sources ne soit reproduits sur la destination, as-tu bien copié les 2 pastespécial ?

Oui, j'ai bien copier les PasteSpecial

c.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

c.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

Voici le doc sur lequel j'ai pas mal avancé depuis.

[quote=Patrice33740 post_id=777974 time=1562426924 user_id=29641]

Patrice, ok ca fonctionne le transpose:=True c'ets bon pour moi

En revanche il me manque deux choses :

1- le fond de remplissage et le meme que "C3" de "bulletin" pour toutes les cellules copier

2 - le format souhaité au collage serait alignement 90.

C'est pas normal que les formats sources ne soit reproduits sur la destination, as-tu bien copié les 2 pastespécial ?

Patrice, je crois avoir trouvé

Sub verti()

Worksheets("Bulletin").Range("C3:AS3").VerticalAlignment = True

End Sub

Par contre peux-tu me dire comment faire pour faire d'une pierre deux coups ?

Avec une seule macro ? Comment dois-je l'ecrire

Merci

Rechercher des sujets similaires à "simplifier instruction"