Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 copier valeur actuel

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

richardlion

XLDnaute Occasionnel
Bonjour a tous,
je débute dans la macro
ci dessous j'ai une macro qui me recopie les valeurs d'une colonne, la macro se déclenche avec un bouton
mais quand je change les valeurs de cette colonne la macro recopie les valeurs de départ et pas celle avec les nouvelles valeurs
comment dois-je écrire ma macro pour quelle recopie les valeurs de la colonne c
merci a vous

Private Sub worksheet_()
'
' colonne Macro
'

'
Columns("B:B").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B2").Select
ActiveCell.FormulaR1C1 = "data"
Range("C3:C17").Value
Selection.Copy
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "2000"
End Sub
 

Pièces jointes

Bonsoir,

afin de bien comprendre... Cette macro insère une colonne avant la colonne B et recopie les valeurs de la colonne C(qui était B avant l'insertion). Dans la macro, la plage est écrite "en dur", ce sera toujours la plage C2:C17. Quelle est la plage que vous voulez copier dans cette colonne B en cliquant sur le bouton ?
 
Bonjour richardlion,
Je ne comprends pas comment votre macro peut marcher sans erreur.
La ligne : "Range("C3:C17").Value" devrait sortir une erreur. Ce n'est pas une action mais une plage .
Cela devrait être "Range("C3:C17").Select"

comment dois-je écrire ma macro pour quelle recopie les valeurs de la colonne c
On recopie les valeurs de la colonne C où ?
En PJ sur appui sur le bouton on recopie la colonne C sur la colonne B.
Code:
Sub worksheet_()
DL = Cells(Cells.Rows.Count, "C").End(xlUp).Row ' dernière ligne occupée
Range("B3:B" & DL) = Range("C3:C" & DL).Value   ' copie colonne C sur colonne B
End Sub
Si c'est pas ça, ou vous modifiez le code, ou vous expliquez plus clairement : On copie quoi sur qoui.
 

Pièces jointes

bonjour sylvanu
pour info j'ai fais ma macro par enregistrement pour faire un test
votre réponse est correct car elle recopie bien mes valeurs même si je modifie la colonne de base.
mais je dois pouvoir comme dans ma macro de base , créer une colonne supplémentaire a chaque fois que je clique sur le bouton pour aller plus loin j'ai mis en PJ un fichier de base sur lequel je souhaite avoir cette macro mais cette fois ci pour toute la colonne H sans les entête bien sur, cela est il possible ?
 

Pièces jointes


voila le bon fichier
 

Pièces jointes

Re,
Un essai avec :
VB:
Private Sub worksheet_activate()
    Dim DL%
    DL = Cells(Cells.Rows.Count, "B").End(xlUp).Row                             ' Dernière ligne occupée
    Columns("C:C").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ' Création colonne
    Range("C2:C" & DL) = Range("B2:B" & DL).Value                               ' Copie des valeurs de B vers C
    ' Range("B3:B" & DL).ClearContents                                            ' Effacement colonne B
End Sub
Mais cela suppose que quelque macro ait rempli la colonne B avant la sélection de la Feuil1 sinon on duplique toujours la même colonne.
 

Pièces jointes

Vous savez, XLD est un site d'entraide, non un site divinatoire. 😉
Alors expliquez on insère une colonne où ?
En PJ je crée une colonne après H et je recopie H dans I.
VB:
Private Sub worksheet_activate()
    Dim DL%
    DL = Cells(Cells.Rows.Count, "A").End(xlUp).Row                             ' Dernière ligne occupée
    Columns("I:I").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ' Création colonne
    Range("I1:I" & DL) = Range("H1:H" & DL).Value                               ' Copie des valeurs de B vers C
End Sub
( cependant comme je suis sous 2007 la fonction utilisée en colonne H m'est inconnue, donc j'espère que ça marchera sur votre PC, sinon à vous d'adapter. )
 

Pièces jointes

merci sylvanu, effectivement il fallait bien créer une colonne après H donc I, j'ai créer un bouton pour lancer la macro je ne sais pas si j'ai bien fais cependant la macro ne se déclenche pas avec le message ci dessous
comment dois je faire pour que cela fonctionne
 
Je ne sais pas. D'une part je n'ai pas cette fonction qui apparait chez moi comme : _xlfn.XLOOKUP
D'autre part, la macro est en "worksheet_activate" comme dans votre fichier.
Donc le mieux, dans votre fichier réel vous installez cette macro qui n'est plus événementielle :
VB:
Sub RecopieValeurs()
    Dim DL%
    DL = Cells(Cells.Rows.Count, "A").End(xlUp).Row                             ' Dernière ligne occupée
    Columns("I:I").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ' Création colonne
    Range("I1:I" & DL) = Range("H1:H" & DL).Value                               ' Copie des valeurs de B vers C
End Sub
Vous mettez un bouton sur la feuille Synthèse, et vous l'accrochez à cette macro. Et vous appuyez sur ce bouton. Que ce passe t-il ?
 
Merci sylvanu pour la correction car cette fois ci ça fonctionne, est il possible d'avoir ne macro qui annule la deniere action au cas ou
 
C'est assez simple car il faut toujours supprimer la colonne I qui est le dernier enregistrement.
Problème : si on appuie deux fois on supprime deux colonnes, il vaut mieux mettre un message d'alerte.
Mettez un bouton ainsi que cette macro :
VB:
Sub Annuler()
    Réponse = MsgBox("Etes vous sur de vouloir supprimer le dernier enregistrement ?", vbYesNo + vbQuestion)
    If Réponse = vbYes Then [I:I].Delete
End Sub
 
Bonjour Sylvanu, merci pour la macro, OK je rajoute un bouton pour cette macro.
auriez vous un conseil a me donner pour apprendre la Macro via internet ou un Book?
 
Bonjour,
Difficile de répondre, vous avez plusieurs sources possibles comme :
- Les tutos de David : https://excel-downloads.com/media/categories/vba.4/
- Des sites internet.
Par ex pour msgbox vous avez :
ou un tuto qui vous donne même le code à utiliser :
ou des sites de formation comme :

Vous avez le choix dans les sites. Mais ce qui est important est l'expérience, l'huile de coude. C'est le meilleur moyen de se perfectionner.
 
Merci a vous pour toutes les infos, je vais essayer de commencer par l'un de ces conseils
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
602
Réponses
17
Affichages
1 K
Réponses
2
Affichages
308
Réponses
5
Affichages
524
Réponses
1
Affichages
233
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…