Déplacer une référence sur une autre feuille
Bonjour,
Dans un document Excel, j'utilise la macro suivante. Celle-ci utilise les référence de la colonne CD 323 a cd 347 de ma feuille Suivi_2011
Par contre, losque les utilisateurs insère des ligne dans la feuille, les références de déplace et ainsi la macro ne fonctionne plus. Je dois donc supprimer des ligne de ma feuille afin de remettre les référence à leur place.
Ma question, est ce que je peux créer une autre feuille et y insérer mes références, de cette facon elles ne se déplaceraient pas.
Mon problème est que je n'arrive pas à modifier le code pour qu'il pointe sur la nouvelle feuille Ref que j,ai créé. Je suis débutante ,, bref je n'y arrive. Si quelqu'un peut me donner quelques conseils , se serait très apprécié.
Voici le code . J'ai surligné la partie que j'aimerais qui se retrouve sur la feuille Ref à la colonne A1
Merci grandement pour votre aide
Sub Transfert()
Dim DerLig As Integer, Nouveau_fichier As String, Référence As String, Référence_bis As String
Dim i As Integer, j As Integer, Feuille As Worksheet
Application.ScreenUpdating = False
Application.Dialogs(xlDialogSaveAs).Show 'création d'un nouveau fichier
Application.DisplayAlerts = False
Nouveau_fichier = ActiveWorkbook.Name
'Suppression des feuilles existantes mais inutiles
For Each Feuille In ActiveWorkbook.Worksheets
If Feuille.Name <> "Soumissions_2011" And Feuille.Name <> "Rapport Mensuel" Then
Feuille.Delete
End If
Next Feuille
Sheets("Soumissions_2011").Activate
'Création de toutes feuilles utiles moins celle pour les lignes sans référence
For j = 323 To 347
Référence_bis = Cells(j, 82)
Sheets("Rapport Mensuel").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Référence_bis
Range("F2") = Date
Sheets("Soumissions_2011").Activate
Next
' Une feuille de plus pour les lignes sans référence dans colonne G
Sheets("Rapport Mensuel").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Sans référence"
Range("F2") = Date
Sheets("Soumissions_2011").Activate
'Report des données sans référence
Range("A7").Activate
Do While ActiveCell <> ""
If ActiveCell.Offset(0, 6) = "" Then
Range(ActiveCell, ActiveCell.Offset(0, 52)).Copy
Sheets("Sans référence").Activate
DerLig = ActiveSheet.Range("A65536").End(xlUp).Row
If DerLig = 3 Then
Range("A6").Activate
Else
Range("A" & DerLig + 1).Activate
End If
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Soumissions_2011").Activate
End If
ActiveCell.Offset(1, 0).Activate
Loop
'Report des données avec référence
Range("A7").Activate
For j = 323 To 347
Référence = Cells(j, 7)
Référence_bis = Cells(j, 82)
Do While ActiveCell <> ""
If ActiveCell.Offset(0, 6) = Référence Then
Range(ActiveCell, ActiveCell.Offset(0, 52)).Copy
Sheets(Référence_bis).Activate
DerLig = ActiveSheet.Range("A65536").End(xlUp).Row
If DerLig = 3 Then
Range("A6").Activate
Else
Range("A" & DerLig + 1).Activate
End If
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Soumissions_2011").Activate
End If
ActiveCell.Offset(1, 0).Activate
Loop
Range("A7").Activate
Next
'Effacement des feuilles du fichier de base et des feuilles nouvellement créées mais sans données.
For Each Feuille In ActiveWorkbook.Worksheets
If Feuille.Range("A6") = "" Then
Feuille.Delete
Else
Feuille.Activate
Range("E:E,I:I,O:O,S:S,V:V,X:X,AA:AA,AD:AD,AW:AW,AX:AX,AY:AY,AZ:AZ,BA:BA,BB:BB,BC:BC,BD:BD,BE:BE,BF:BF,BG:BG").Delete Shift:=xlToLeft
DerLig = Range("A65536").End(xlUp).Row
Range("A" & DerLig + 1).Activate
End If
Next Feuille
ActiveWorkbook.Save
End SubBonjour
A tester
Définis ta plage CD323:CD347 avec un nom (ExempleBase)
Menu: Insertion ---> Noms ---> Définir
Ton code deviendra
[barrer]For j = 323 To 347[/barrer]
For j = [Base].Row To [Base].Row + [Base].Rows.Count - 1Tu pourras insérer des lignes
Il doit y avoir plus simple mais pas trop cherché
Merci pour ta réponse, par contre , est ce que je dois définir un nom pour chaque cellule de 323 a 347 ou seulement 1 nom pour la plage entiere de 323 a 347 ?
merci
Ok, petite erreur de ma part lors de la modification du code...
Maitenant testé et fonctionnel !!! C'est exactement ce que j'avais besoin !!!
Merci beaucoup pour ton aide Banzai64 !!!!!