Boucles imbriquées et génération de classeur

Rafilo13

XLDnaute Junior
Bonjour à tous,

Un problème sur lequel je me casse la tête depuis de nombreuses heures. Si certains d'entre vous ont une idée sur le sujet je suis preneur

J'ai créer un petit programme qui à pour but créer autant de classeur que ligne afin de pouvoir le diffuser de manière individuelle.
Je fais en sorte de pouvoir choisir l'onglet du classeur en question (Afin de me positionner sur le bon mois) et je souhaite tous simplement les enregistrer dans le même répertoire que le fichier source.

J'ai pris le parti de copier a chaque fois la feuille complète dans un classeur en la renommant du nom du commercial à qui je vais diffuser le classeur, puis je souhaitais expurger le fichier des lignes qui ne correspondaient pas au commercial en question. seul problème cela marche bien pour le premier mais après la boucle pour supprimer ne marche pas ....

J'ai beau essayé dans tous les sens rien.

J'ai fais un fichier exemple.

Merci par avance pour votre aide !


VB:
Sub suppression()

Dim mav As Variant
Dim Chemin As String
Dim i As Integer
Dim j As Integer
Dim b As Variant
Dim c As Variant

Chemin = ActiveWorkbook.Path & Application.PathSeparator
mav = InputBox("rentrer nom feuile", "nom feuile")


With ThisWorkbook.Sheets(mav)

             For i = .Range("B" & .Rows.Count).End(xlUp).Row To 6 Step -1

b = .Range("C" & i).Value
c = .Range("e" & i).Value

Sheets(mav).Select
Sheets(mav).Copy
ActiveWorkbook.SaveAs Filename:=Chemin & b & " " & c & ".xlsx"


For j = 6 To 50

If Cells(j, 3).Value <> b Then
Cells(j, 3).entireraw.Delete

End If

Next j


Next i

End With


End Sub
 

Pièces jointes

  • Fichier exemple excel download .xlsm
    23 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Rafilo,
Il y a une erreur de syntaxe sur la ligne :
Cells(j, 3).entireraw.Delete
au lieu de
Cells(j, 3).EntireRow.Delete
( quand VBA reconnait un mot clé il mets des majuscules, sinon il laisse tel quel )
Ceci dit ce n'est peut être pas la seule. Mais il vaut mieux y aller step by step.
 

youky(BJ)

XLDnaute Barbatruc
Bonjour tous,
Je viens de faire alors je mets . . .
J'ai ajouté un onglet Tempo (c'est une copie de l'onglet)
Après ca roule
Bruno

VB:
Sub creation_classeur()
onglet = InputBox("rentrer nom feuille", "nom feuille")
With Sheets(onglet)
Application.ScreenUpdating = False
 For lig = 6 To .[C65000].End(3).Row
  Sheets("Tempo").[A5:AK8].ClearContents
   Sheets("Tempo").[A5:AK5].Value = .Range("A" & lig & ":AK" & lig).Value
     Sheets("Tempo").Copy
       ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & .Range("C" & lig) & ".xlsx"
        ActiveWorkbook.Close (False)
 Next
Application.ScreenUpdating = True
End With
End Sub
 

Pièces jointes

  • Fichier exemple excel download (1).xlsm
    23.9 KB · Affichages: 7

Discussions similaires

Réponses
23
Affichages
1 K

Statistiques des forums

Discussions
311 730
Messages
2 081 989
Membres
101 856
dernier inscrit
Marina40