XL 2013 Copier-Coller des données sans le menu déroulant en vba

Roseline

XLDnaute Occasionnel
Bonjour,
J'ai crée une vba pour transférer des données d'un fichier excel à l'autre. Tout fonctionne bien sauf que le menu déroulant se copie également et je ne désire pas cela.
Quelle commande dois-je ajouter?

J'efface le contenu de mon fichier avec ceci
Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Select
x = ActiveCell.Row
Range("A3:m" & x).ClearContents

Je fais la copie des données de mon fichier maître
Range("A" & Rows.Count).End(xlUp).Select
x = ActiveCell.Row
Range("A3:m" & x).Select
Selection.Copy

Je colle mes données dans mon fichier vide
Range("A3").Select
ActiveSheet.PasteSpecial xlPasteValues
Application.cutcopymode = false

Merci de m'aider
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Une trame exemple sur laquelle commencer
(test avec 2 classeurs ouverts et non enregistrés dans Excel
Donc faire les adaptations nécéssaires
VB:
Sub Test()
Dim A As Range
Set A = Range("A1:M" & Cells(Rows.Count, 1).End(xlUp).Row)
With Workbooks("Classeur2").Sheets(1)
.Range("A3:M" & .Cells(Rows.Count, 1).End(xlUp).Row) = "" ' effacement
.Range("A3").Resize(A.Rows.Count, A.Columns.Count).Value = A.Value ' "copie" valeurs seules
End With
End Sub
 

Roseline

XLDnaute Occasionnel
Allo
Merci c'est ce que je cherchais.
J'ai un autre souci, si je veux protéger une seule colonne dans mon fichier car elle aura des formules, quelle est la commande pour laisser verrouiller juste cette colonne là et pas les autres. Par exemple, la colonne B
 

Roseline

XLDnaute Occasionnel
Allo
Merci c'est ce que je cherchais.
J'ai un autre souci, si je veux protéger une seule colonne dans mon fichier car elle aura des formules, quelle est la commande pour laisser verrouiller juste cette colonne là et pas les autres. Par exemple, la colonne B

Voici mon code:
Comme mon fichier est très gros j'ai ajouté une vba qui permet d'aller directement à la dernière ligne de mon fichier.

On Error Resume Next
ActiveSheet.ShowAllData
dernligne = Range("A" & Rows.Count).End(xlUp).Row
Cells(dernligne + 1, 1).Select

Avant la fermeture du fichier je lui demande de faire un copier coller valeur de mes données car j'ai des formules "aujourd'hui" et je ne veux que pas qu'elle change à l'ouverture du fichier le jour suivant. C'est là que ma formule se trouve et je voudrais protéger cette colonne afin que personne n'efface par erreur la formule.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

dernligne = Range("F" & Rows.Count).End(xlUp).Row
Range("A5:G" & dernligne).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Range("A5:G" & dernligne).Select
Selection.Locked = False
Selection.FormulaHidden = False
dernligne = Range("A" & Rows.Count).End(xlUp).Row
Range("A5:G" & dernligne).Select

Merci encore de votre aide
 

Monptipiton

XLDnaute Nouveau
Bonsoir Roseline,

J'ai un autre souci, si je veux protéger une seule colonne dans mon fichier car elle aura des formules, quelle est la commande pour laisser verrouiller juste cette colonne là et pas les autres. Par exemple, la colonne B

Une proposition en VBA :

- A affecter au worksheet_change de la feuille concernée
VB:
'La variable Antiboucle permet d'éviter une execution en boucle à cause du changement effectué par le undo
'L'adresse de la colonne ciblée ("B:B") est à adapter
If AntiBoucle = False And Target.Column = Range("B:B").Column Then MsgBox ("Les formules de cette colonne ne doivent pas être changée"): AntiBoucle = True: Application.Undo

- A affecter au worksheet_selectionchange de la feuille concernée
VB:
'Permet de réamorcer le code ci-dessus
AntiBoucle = false

- A écrire en haut d'un module (de déclaration de variables public par exemple)
VB:
'Variable publique : est gardé en mémoire un certain temps
Public AntiBoucle As Boolean

- A affecter au Workbook_BeforeClose
VB:
'Libère la mémoire au cas où ça n'aurait pas été fait
if not AntiBoucle is nothing then set AntiBoucle = nothing

Avant la fermeture du fichier je lui demande de faire un copier coller valeur de mes données car j'ai des formules "aujourd'hui" et je ne veux que pas qu'elle change à l'ouverture du fichier le jour suivant. C'est là que ma formule se trouve et je voudrais protéger cette colonne afin que personne n'efface par erreur la formule.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

dernligne = Range("F" & Rows.Count).End(xlUp).Row
Range("A5:G" & dernligne).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Range("A5:G" & dernligne).Select
Selection.Locked = False
Selection.FormulaHidden = False
dernligne = Range("A" & Rows.Count).End(xlUp).Row
Range("A5:G" & dernligne).Select

Un peu d'optimisation de code ça ne fera pas de mal :

VB:
With Range("A5:G" & range("F" & Rows.Count).End(xlUp).Row)
  .Formula = .value
  .Locked = False
  .FormulaHidden = False
end with
Range("A5:G" & Range("A" & Rows.Count).End(xlUp).Row).Select

C'est là que ma formule se trouve et je voudrais protéger cette colonne afin que personne n'efface par erreur la formule.

Adapter la solution proposée, et plus d'erreur ;)

Pour effectuer quand même des modifications sur les plages protégées par ma solution :
Onglet développeur -> Mode création

Ça te va ?
 

Discussions similaires