ecrire + de feuilles dans un code vba(worksheets)
#1
Régulier XLPages

Inscription: 31/12/2008

Messages: 55

Système d'exploitation:
PC
Version Excel utilisée:
excel 2003
Posté le : 13-05-2011 12h03

bonjour le forum
j'ai un code vba mais il ne fonctionne qu'avec une seule feuille,excel2003 n'ayant que 256 colonnes il m'en faudrait bcp plus d'ou plusieurs feuilles en continuité de le feuil2,mais comment le formuler dans le code vba que je joint.

Sub Jad73()

Dim wsData As Worksheet, wsR As Worksheet, rg As Range
Dim larg As Integer, Série1 As Variant, Série2 As Variant
Dim i%, j%, nLg%, DeltaV%, Départ%, rCol%, rLig() As Integer

'----------- Lignes à modifier selon convenance --------------
Départ = 2                 'N° de la première ligne des résultats
Set wsData = Worksheets("Feuil1")   ' feuille contenant les données
Set wsR = Worksheets("Feuil2")     ' feuille contenant les réultats
wsData.Range("A1") = "Données"      ' impose un titre à la base de données
'------------------------------------------------------------

i = 2                             'N° de la première ligne des données
Application.ScreenUpdating = False
With wsData
  Set rg = .Range("A2").CurrentRegion
  Set rg = rg.Offset(1, 0).Resize(rg.Rows.Count - 1, rg.Columns.Count)
  larg = rg.Columns.Count                          'nbre de données sur une ligne
  DeltaV = Application.WorksheetFunction.Max(rg)
  ReDim rLig(DeltaV)
                  ' inscription du N° des blocs de résultats
  For j = 1 To DeltaV: rLig(j) = Départ - 1: wsR.Cells(rLig(j), (larg + 1) * (j - 1) + 1) = j: Next j
  Série1 = .Range(.Cells(i, 1), .Cells(i, larg)).Value
 
                 ' répartition des données dans les blocs
  While i <= rg.Rows.Count
    i = i + 1
    Série2 = .Range(.Cells(i, 1), .Cells(i, larg)).Value
    For j = LBound(Série1, 2) To UBound(Série1, 2)
      rLig(Série1(1, j)) = rLig(Série1(1, j)) + 1
      nLg = rLig(Série1(1, j))
      rCol = (Série1(1, j) - 1) * (larg + 1) + 1
      If rCol <= 0 Then MsgBox "Pas de valeur nulle dans les données. Veuillez corrigez.": Exit Sub
      wsR.Range(wsR.Cells(nLg, rCol), wsR.Cells(nLg, rCol + larg - 1)) = Série2
    Next j
    Série1 = Série2
  Wend
End With
Application.ScreenUpdating = True

End Sub

merci

Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes