donner une adresse de cellule dans une macro

PAPA WALKER

XLDnaute Junior
Bonjour,

Je souhaite excécuter une macro qui ira ajouter une ligne dans un tableau et ensuite, copier des formules dans cette ligne qu'elle vient de crééer. Les formule sont en ligne 6 et dans plusieurs cellules. Au fur et à mesure que le tableau va s'incrémenenter, la copie devar se faire dans une ligne différente...

Je ne sais pas si je m'exprime bien, maisje colle ci-dessous la macro quej'ai commencé à écrire et qui bloque pour le moment sur la variable de la cellule où il faudra copier la formule.

Merci de votre aide et peut-êter que ma démarche pourrait-être sipifiée, mais je ne suis vraiment pas très fort en Excel.

Cldt

C'est le: Range("=C& NumeroLigne").Select qui me bloque



Sub insertion_ligne()
'
' insertion_ligne Macro
' Macro enregistrée le 10/11/2007 par LE NAOUR
'
' Touche de raccourci du clavier: Ctrl+i
'
Dim NumeroLigne As Long

Range("A8").Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlUp).Select
Selection.EntireRow.Insert
NumeroLigne = ActiveCell.Row - 6
Selection.Value = NumeroLigne
Range("C6").Select
Selection.Copy
Range("=C& NumeroLigne").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("E6:I6").Select
Selection.Copy
Range("E+NumeroLigne").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("BO6:BQ6").Select
Selection.Copy
Range("BO+NumeroLigne").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("DW6").Select
Selection.Copy
Range("DW+NumeroLigne").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("D+NumeroLigne").Select
End sub
 

Banzai64

XLDnaute Accro
Re : donner une adresse de cellule dans une macro

Re

Une étude si cela te convient

Mais tu dois avoir une donnée écrite dans la colonne A au moins en ligne 7

Code:
Sub insertion_ligne()
Dim NumeroLigne As Long

NumeroLigne = Range("A65536").End(xlUp).Row
Rows(NumeroLigne).Insert

Range("C6").Copy Range("C" & NumeroLigne)
Range("E6:I6").Copy Range("E" & NumeroLigne)
Range("BO6:BQ6").Copy Range("BO" & NumeroLigne)
Range("DW6").Copy Range("DW" & NumeroLigne)
Range("D" & NumeroLigne).Select
End Sub
 

Spitnolan08

XLDnaute Barbatruc
Re : donner une adresse de cellule dans une macro

Bonjour PapaWalker, Banzaï,

Une autre méthode, si on considère que dans chaque ligne de ton tableau tu as les mêmes formules :
Code:
Sub InsèreLigneFormule()
Dim DerLig As Long, DerCol As Long
Dim Cel As Range, Plage As Range

DerLig = Range("A65536").End(xlUp).Row + 1
DerCol = Range("IV6").End(xlToLeft).Column
Cells(DerLig, 1).EntireRow.Insert
Cells(DerLig, 1).EntireRow.FillDown
Set Plage = Range(Cells(DerLig, 1), Cells(DerLig, DerCol))
For Each Cel In Plage
   If Cel.HasFormula = False Then Cel.ClearContents
Next
End Sub
Si ton tableau a un nombre de colonnes figées, tu peux alléger ce code ainsi (Par exemple pour 104 colonnes)
Code:
Sub InsèreLigneFormule()
Dim DerLig As Long
Dim Cel As Range, Plage As Range

DerLig = Range("A65536").End(xlUp).Row + 1
Cells(DerLig, 1).EntireRow.Insert
Cells(DerLig, 1).EntireRow.FillDown
Set Plage = Range(Cells(DerLig, 1), Cells(DerLig, 104))
For Each Cel In Plage
   If Cel.HasFormula = False Then Cel.ClearContents
Next
End Sub
Cordialement
 

PAPA WALKER

XLDnaute Junior
Re : donner une adresse de cellule dans une macro

Merci de vos réponses, je suis parvenu à mes fins.

Il ne me reset plus qu'a sélectionner une cellule en bout de tableau pour y ajouter la dare du jour, lors de l'exécution d'une impression.

Je vais donc explorer le forum pour trouver la sintaxe pour l'insertion de la date système.

Merci infiniment, :)

Spitnolan08 : Je n'ai pas encore le niveau pour comprendre la totalité de ton code, mais c'est impressionnant.
 

Spitnolan08

XLDnaute Barbatruc
Re : donner une adresse de cellule dans une macro

Re,
Je n'ai pas encore le niveau pour comprendre la totalité de ton code
Quelques commentaires pour t'aider à mieux le comprendre :
Code:
Sub InsèreLigneFormule()
[COLOR=Green]'***Déclaration des variables[/COLOR]
Dim DerLig As Long, DerCol As Long
Dim Cel As Range, Plage As Range

[COLOR=Green]'***Identifie les dernière ligne et dernière colonne du tableau[/COLOR]
DerLig = Range("A65536").End(xlUp).Row + 1
DerCol = Range("IV6").End(xlToLeft).Column

[COLOR=Green]'***Insère une ligne en fin de tableau et la remplit avec les éléments de la ligne précédente[/COLOR]
Cells(DerLig, 1).EntireRow.Insert
Cells(DerLig, 1).EntireRow.FillDown

[COLOR=Green]'***Efface le contenu de toutes les cellules de la ligne ajoutée ne contenant pas de formules[/COLOR]
Set Plage = Range(Cells(DerLig, 1), Cells(DerLig, DerCol))
For Each Cel In Plage
   If Cel.HasFormula = False Then Cel.ClearContents
Next
End Sub
La dernière partie est nécessaire car il n'existe pas à ma connaissance de constante permettant de ne recopier que les cellules avec formules... C'est dommage car cela rendrait le code beaucoup plus efficace sur un grand tableau.:cool:

Espérant avoir répondu à tes attentes d'explications,
Cordialement
 

Pierrot93

XLDnaute Barbatruc
Re : donner une adresse de cellule dans une macro

Bonjour Papawalker, Spitnolan:)

Pas sur d'avoir tout compris Spitnolan :

La dernière partie est nécessaire car il n'existe pas à ma connaissance de constante permettant de ne recopier que les cellules avec formules... C'est dommage car cela rendrait le code beaucoup plus efficace sur un grand tableau

tu peux peut être utiliser la méthode "SpecialCells", qui te permet de boucler uniquement sur les cellules contenant une formule, enfin pas tout suivi, donc peut être à coté... Petit exemple ci dessous :

Code:
Sub test()
Dim c As Range
For Each c In Range("A1:A10").SpecialCells(xlCellTypeFormulas)
    c.Select
Next c
End Sub

bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : donner une adresse de cellule dans une macro

Re

aarf, désolé Spitnolan, je pensais que tu cherchais ce type de code et qu'il marcherait :

Code:
Plage.SpecialCells(xlCellTypeFormulas).ClearContents

mais si c'est l'inverse....

Code:
plage.SpecialCells(xlCellTypeConstants).ClearContents

bon après midi
@+
 
Dernière édition:

Spitnolan08

XLDnaute Barbatruc
Re : donner une adresse de cellule dans une macro

Re,

Effectivement, cela permet de remplacer ma boucle finale et c'est donc parfait car cela résout ma problématique de boucle.

Mais en fait ma remarque concernait le filldown ou autofill qui ne peuvent être agrémentés directement par une constante ne retenant que les formules. Ce qui permettrait donc de supprimer la dernière partie du code (Que ce soit ma version initiale ou ta dernière). Voilà, voilà, tu sais tout!

Bonne fin de journée:)
 

Discussions similaires

Réponses
2
Affichages
141
Réponses
3
Affichages
597

Statistiques des forums

Discussions
312 386
Messages
2 087 854
Membres
103 669
dernier inscrit
Anne Sicard