Copie automatique de la cellule

CCANDOR Messages postés 5 Date d'inscription jeudi 3 novembre 2005 Statut Membre Dernière intervention 31 juillet 2007 - 3 nov. 2005 à 15:06
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 3 nov. 2005 à 23:15
Bonjour à tous,
Pourriez vous m'indiquer comment créer une macro qui ,de façon automatique lors de la saisie d'une cellule A copie la cellule du dessus de la cellule B,dans laquelle se trouvent une fonction,sur celle du dessous?
Et cela pour toutes les cellules saisies?
Cette manip permet ainsi d'éviter les erreurs d'un copier-coller de la cellule haute sur celles du dessous.
ex:si A2=1 ,B1 copier-coller sur B2 ,...et ainsi de suite

Merci d'avance

3 réponses

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
3 nov. 2005 à 15:40
Bonjour,

Tu peux essayer ceci, mais celà copie uniquement le contenu de la cellule, pas la fonction.



Sub test()

If Range("A1").Value = "x" Then

Range("B2") = Range("B1").Value

Range("C2") = Range("C1").Value

Range("D2") = Range("D1").Value

Else

MsgBox "La valeur dans A1 est différente de x"

End If

End Sub



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
3 nov. 2005 à 15:58
Re Bonjour,

Si les cellules à copier contiennent des formules (exemple =Somme(A1:A2).


Mets ce code.



Sub CopieFormule()

Range("B1").Select

Selection.Copy

Range("B2").Select

Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=False

Range("c1").Select

Selection.Copy

Range("c2").Select

Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=False

Range("D1").Select

Selection.Copy

Range("D2").Select

Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=False

Application.CutCopyMode = False

End Sub



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
3 nov. 2005 à 23:15
Lut,
Pour cela tu dois intercepter le changement dans ta feuille pour cela utilise l'évènement SheetChange de ta feuille et colles le code ci-aprés
Si tu désire que la fonction soit valable pour toutes les feuilles colles le code dans l'évènement SheetChange de ThisWorkBook

Private Sub Worksheet_Change( ByVal Target As Range)


'*** Si tu colles le code dans l'évènement SheetChange de ThisWorkBook


'*** Tu peux intercepter une ou plusieurs feuilles


'*** ex:


'*** if sh.Name = "Feuil1" then .......


'*** Tu peux faire la manip si seulement ta cellule


'*** appartient à un groupe de cellule


If IsCellInRange(ActiveCell, "A1:A5" ) = True Then


Target.Offset( 0 , 1 ).Formula = Target.Offset(- 1 , 1 ).Formula


End If


'*** Si plusieurs groupe utilises


'*** IsCellInRange(ActiveCell,"A1:A5,D1:D5")= True Then


End Sub


'*** CETTE FONCTION DOIT ËTRE SOIT DANS UN MODULE POUR ETRE PUBLIC


'*** SOIT DANS LE CODE DE TA FEUILLE POUR ETRE PRIVATE


Function IsCellInRange(Rng As Range, RangeName As String ) As Boolean


On Error Resume Next


IsCellInRange = _


Not (Application.Intersect(Rng, Range(RangeName)) Is Nothing )


End Function

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
Rejoignez-nous