Conflit entre 2 macros, besoin d'aide
Résolu
Anais0998
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
Anais0998 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Anais0998 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Conflit entre 2 macros, besoin d'aide
- Supercopier 2 - Télécharger - Gestion de fichiers
- 2 ecran pc - Guide
- Faire 2 colonnes sur word - Guide
- Whatsapp 2 - Guide
- Word numéro de page 1/2 - Guide
2 réponses
Bonjour
1) A quoi servent ces beaucoup trop nombreuses variables publiques ????
2) Au lieu de
il est préférable d'écrire :
et idem pour les suivants
1) A quoi servent ces beaucoup trop nombreuses variables publiques ????
Dim An2010 As Worksheet, An2011 As Worksheet, An2012 As Worksheet, An2013 As Worksheet, An2014 As Worksheet, An2015 As Worksheet ...,
2) Au lieu de
WsResult.Range("J2").Copy WsRech.Range("B1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'Statut COTISATIONS
il est préférable d'écrire :
WsRech.Range("B1").Value = WsResult.Range("J2").Value 'Statut COTISATIONS
et idem pour les suivants
Bonjour,
Essaies :
Essaies :
Option Explicit Sub EnregistrerModifications2010() Dim PlagedeRecherche As Range Dim SelectionLot As Range Dim ZoneAcopier As Range Dim ZoneAcoller As Range Dim AdresseTrouvee As Range Dim ValeurTrouvee As Variant Application.ScreenUpdating = False With Worksheets("an2010") Set PlagedeRecherche = Intersect(.Columns(1), .UsedRange) End With Set SelectionLot = Worksheets("Formulaire").Range("A1") ValeurTrouvee = SelectionLot.Value Set AdresseTrouvee = PlagedeRecherche.Cells.Find(what:=ValeurTrouvee, LookAt:=xlWhole) If Not AdresseTrouvee Is Nothing Then Set ZoneAcopier = Worksheets("Formulaire").Range("L2:AJ2") Set ZoneAcoller = AdresseTrouvee.Offset(0, 12).Resize(1, ZoneAcopier.Columns.Count) ZoneAcoller.Value = ZoneAcopier.Value If MsgBox("Les modifications ont bien été enregistrées. Souhaitez-vous consulter la base de données ?", vbYesNo, _ "Confirmation de l'enregistrement des modifications") = vbYes Then 'Application.Goto Reference:=ActiveCell, scroll:=True 'ça c'est inutile ! Else Application.Goto Reference:=AdresseTrouvee, scroll:=True End If End If End Sub
1) toutes ces variables sont les feuilles de mon classeur qui vont être concernées par la macro.
2) c'est ce que j'avais fait au départ, mais j'avais changé pensant alléger ma macro
2) il est préférable d'éviter d'employer le presse-papier.
Merci pour votre aide et bonne journée.
Donc pour copier les valeurs :
RangeDestination.Value = RangeSource.Value
et pour tout copier :
RangeSource.Copy Destination:=CellDestination
J'ai finalement changé mes procédures car avec un worksheet change et un worksheet selectionchange sur la même feuille, c'était vraiment le bazar complet. J'ai donc refait mes codes et inséré des boutons déclencheurs pour les macros. Par contre, il y a encore un truc qui m'échappe. J'ai 2 feuilles distinctes 1 et 2. La (2) contient des MEFC, et lorsque je fais des "copié/collé" de la feuille 1 vers le feuille 2, c'est la panique dans mes MEFC. Pourtant je ne fais que coller de valeurs à la place d'autres valeurs, donc pas de rajout dans mon tableau. J'aimerais que mes MEFC ne changent pas. Je vous mets mon code actuel, si vous aviez une idée des erreurs à corriger. Je vous en remercie d'avance. de plus, je ne vois pas comment adapter ce code avec vos explications sur le copié collé ...
<
Sub EnregModif_proprietaires()
Application.ScreenUpdating = False
Dim wksp As Worksheet, wksf As Worksheet
Dim selectionlot As Range
Set selectionlot = ThisWorkbook.worksheets("Formulaire").Range("A1")
Set wksp = ThisWorkbook.worksheets("Proprietaires")
Set wksf = ThisWorkbook.worksheets("Formulaire")
ValeurTrouveeP = selectionlot.Value
Set PlagedeRechercheP = Sheets("Proprietaires").Columns(1)
Set AdresseTrouveeP = PlagedeRechercheP.Cells.Find(what:=ValeurTrouveeP, LookAt:=xlWhole)
If Not AdresseTrouveeP Is Nothing Then
AdresseTrouveeP = AdresseTrouveeP.Address
Application.Goto Reference:=wksp.Range(AdresseTrouveeP), scroll:=True
ActiveCell.Offset(0, 1).Select 'date achat
wksf.Range("B4").Copy
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Select 'proprietaire
wksf.Range("B7").Copy
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 2).Select
wksf.Range("B23").Copy 'observations
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Select
wksf.Range("B12").Copy 'conjoint
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Select
wksf.Range("B16").Copy 'adresse
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Select
wksf.Range("B17").Copy 'cp adresse
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Select
wksf.Range("B18").Copy 'commune adresse
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Select
wksf.Range("B19").Copy 'bp
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Select
wksf.Range("B20").Copy 'cp bp
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Select
wksf.Range("B21").Copy 'commune bp
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 2).Select
wksf.Range("B8").Copy 'telephone fixe
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Select
wksf.Range("B9").Copy 'mobilis proprietaire
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Select
wksf.Range("B13").Copy 'mobilis conjoint
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Select
wksf.Range("B10").Copy 'mail proprietaire
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Select
wksf.Range("B14").Copy 'mail conjoint
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 5).Select
wksf.Range("B3").Copy 'conjoint
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Application.Goto Reference:=wksp.Range(AdresseTrouveeP), scroll:=True
ActiveCell.Select
Application.ScreenUpdating = True
End With
End If
End Sub