Macro ne voulant pas fonctionner ds pls cas

Fermé
Etienne Soler - 13 juin 2012 à 13:58
 Etienne Soler - 14 juin 2012 à 11:35
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
14 juin 2012 à 08:18
retourne à l'école
0
Etienne Soler
14 juin 2012 à 11:30
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 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
Modifié par ccm81 le 14/06/2012 à 10:17
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
14 juin 2012 à 11:35
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