Prob VBA creation et update de feuilles

Grek

XLDnaute Nouveau
Je suis en train d'ecrire une macro afin de creer automatiquement des feuilles sur base d'une liste (voir fichier ci-joint).
Pas de problème pour creer les feuilles (quoique je ne suis pas certain d utiliser la methode la + simple).
Par contre le problème se pose lorsque je veux copier les données en colonnes D et E dans la feuille appropriée.

Je ne peux pas faire un Range(Selection, Selection.End(xlDown)).Select puis coller dans la feuille appropriée car les cellules sont unifiées.
De plus le Selection.End(xlDown) n'est pas la methode la plus appropriée et ne fonctionnera pas si je n'ai qu'une valeur en D.

Merci d'avance pour votre aide,

Gregory
 

Pièces jointes

  • probmacro2.xls
    26 KB · Affichages: 49

Grek

XLDnaute Nouveau
Re : Prob VBA creation et update de feuilles

Super, c'est exactement ce que je cherchais àf aire.
Un grand merci!

Pourrais-tu juste me commenter les lignes de code pour m'aider à les assimilers ?
Thx!

Code:
Application.ScreenUpdating = False
n = 5
While Sheets("Main").Range("C" & n) <> "END"
  If Sheets("Main").Range("C" & n) <> "" Then
y = 5
 Sheets("Template").Copy After:=Sheets(2)
 ActiveSheet.Name = Left(Sheets("Main").Range("C" & n), 31)
 x = 0
   While Sheets("Main").Range("D" & n + x) <> ""
      ActiveSheet.Range("Y" & y + x) = Sheets("Main").Range("D" & n + x)
      ActiveSheet.Range("AC" & y + x) = Sheets("Main").Range("E" & n + x)
      x = x + 1
   Wend
 End If
 n = n + 1
 y = 5
Wend
Application.ScreenUpdating = True
 

pierrejean

XLDnaute Barbatruc
Re : Prob VBA creation et update de feuilles

Re

Code:
' pour figer l'ecran
Application.ScreenUpdating = False
'initialisation n=ligne de la colonne C ou debuter le test
n = 5
' test: feuille Main, colonne c ,ligne n, n'est pas END
While Sheets("Main").Range("C" & n) <> "END"
' teste non vide
  If Sheets("Main").Range("C" & n) <> "" Then
'initialisation ligne ou debuter l'inscription dans la nouvelle feuille
y = 5
'création de la nouvelle feuille par copie de Template
 Sheets("Template").Copy After:=Sheets(2)
'On nomme la nouvelle feuille
 ActiveSheet.Name = Left(Sheets("Main").Range("C" & n), 31)
'initialisation de l'increment pour le test colonne D
 x = 0
'test feuille Main colonne D ligne n+x
   While Sheets("Main").Range("D" & n + x) <> ""
'report des colonnes D et E
      ActiveSheet.Range("Y" & y + x) = Sheets("Main").Range("D" & n + x)
      ActiveSheet.Range("AC" & y + x) = Sheets("Main").Range("E" & n + x)
' increment de la ligne pour test colonne D
      x = x + 1
   Wend
 End If
' increment pour test de la colonne C
 n = n + 1
' réinitialisation de la ligne d'ecriture sur nouvelle feuille
 y = 5
Wend
' libération de l'ecran
Application.ScreenUpdating = True
 

Discussions similaires

Statistiques des forums

Discussions
312 413
Messages
2 088 199
Membres
103 761
dernier inscrit
rouazali