Macro ne voulant pas fonctionner ds pls cas

Etienne Soler -  
 Etienne Soler -
Bonjour, voici la macro que j'ai réalisé, elle consiste à créer une nouvelle feuille et y coller les des lignes d'une autre feuille comprise ds le meme classeur en fonction de valeur préalablement fixer par la macro pour désigner les lignes de cette première feuille.

en gros, dans le premier tableau g des lignes affecter des valeurs
BR
DO
AS
AC
....

ma macro fonctionne correctement pour les deux premiers cas mais ensuite elle ne fonctionne plus, elle me créé la feuille mais ne copie plus les lignes dans cette nouvelles feuille.

Voici la macro

Sub commandeBRENT()
Dim DerLig As Integer
Dim ligne As Integer

'calcul de la dernière ligne de la feuille EnCours
With Sheets(Sheets.Count)
DerLig = .Range("C" & .Rows.Count).End(xlUp).Row

End With

ligne = 23

'on identifie chaque entreprise par ces deux première lettres en colonne E'
Do Until ligne > DerLig
Range(Cells(ligne, "E"), Cells(ligne, "E")).Select
ActiveCell.FormulaR1C1 = "=LEFT(RC[-4],2)"

ligne = ligne + 1
Loop

'Création de la feuille BR'
ligne = 23

Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
Sheets(Sheets.Count).Name = "BR"

Columns("A:A").ColumnWidth = 64
Columns("B:B").ColumnWidth = 50
Columns("C:C").ColumnWidth = 9.57
Columns("D:D").ColumnWidth = 4.14

Rows("20:20").Select

ActiveWindow.FreezePanes = True

Sheets(Sheets.Count - 2).Select
Range("A1:B4").Select
Selection.Copy
Sheets("BR").Select
Range("A1").Select
ActiveSheet.Paste
Sheets(Sheets.Count - 2).Select
Range("A22:D22").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("BR").Select
Range("A19").Select
ActiveSheet.Paste
Range("A16").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "COMMANDE BRENT"
Range("A17").Select


'copier les lignes BRENT'

Sheets(Sheets.Count - 2).Select

Do Until ligne > DerLig
If Range(Cells(ligne, "E"), Cells(ligne, "E")).Value = "BR" Then

Range(Cells(ligne, "A"), Cells(ligne, "D")).Select
Selection.Copy
Sheets("BR").Select
Range(Cells(ligne, "A"), Cells(ligne, "A")).Select
ActiveSheet.Paste
Sheets(Sheets.Count - 2).Select
ligne = ligne + 1
Else
ligne = ligne + 1
End If

Loop

MsgBox "La commande Brent a été réalisée avec succès "

End Sub

si une personne a une idée d'ou peut provenir mon pb, ou qui souhaite plus d'informations vous êtes les bienvenus !!!

A voir également:

2 réponses

AllezLesBleus
 
retourne à l'école
0
Etienne Soler
 
ben écoute j'y suis déjà a l'école mais bon ça fait deux semaines que je fais du vba, donc pour des com comme celui la je pense que tu peux t'abstenir à moins que tu ais de bonnes raisons que j'attends avec impatience !
0
ccm81 Messages postés 11033 Statut Membre 2 434
 
Bonjour

peut être un problème ici
Sheets(Sheets.Count).Name = "BR"
la feuille créée prend toujours le même nom, ça va coincer
ton code peut très nettement s'améliorer
le mieux est d'envoyer une partie de ton fichier au format excel 2003, sans données confidentielles, su cjoint.com et de joindre le lien obtenu à ton prochan message

bonne suite
0
Etienne Soler
 
merci de ta réponse mais en fait j'ai trouvé ce qui cloché,
Pour répondre deja, en fait chaque valeur " BR" "DO" "SA" je créé une macro a chaque fois, donc le nom de la feuille est changé.
le pb étais au moment ou je calcul la dernière ligne de ma feuille, vu que je créé une nouvelle feuille il faut que je calcul ma dernière ligne sur ma feuille de départ d'ou le :

With Sheets(Sheets.Count - 2)
DerLig = .Range("K" & .Rows.Count).End(xlUp).Row

End With
0