Conflit entre 2 macros, besoin d'aide
Résolu/Fermé
Anais0998
Messages postés
9
Date d'inscription
lundi 4 mars 2019
Statut
Membre
Dernière intervention
14 mars 2019
-
4 mars 2019 à 13:34
Anais0998 Messages postés 9 Date d'inscription lundi 4 mars 2019 Statut Membre Dernière intervention 14 mars 2019 - 8 mars 2019 à 12:45
Anais0998 Messages postés 9 Date d'inscription lundi 4 mars 2019 Statut Membre Dernière intervention 14 mars 2019 - 8 mars 2019 à 12:45
A voir également:
- Conflit entre 2 macros, besoin d'aide
- 2 ecran pc - Guide
- Word numéro de page 1/2 - Guide
- France 2 uhd - Accueil - TV & Vidéo
- Whatsapp avec 2 cartes sim - Guide
- Jdownloader 2 - Télécharger - Téléchargement & Transfert
2 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié le 4 mars 2019 à 21:03
Modifié le 4 mars 2019 à 21:03
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
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
7 mars 2019 à 13:40
7 mars 2019 à 13:40
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
Anais0998
Messages postés
9
Date d'inscription
lundi 4 mars 2019
Statut
Membre
Dernière intervention
14 mars 2019
8 mars 2019 à 12:45
8 mars 2019 à 12:45
Bonjour Patrice et merci pour ce code qui fonctionne !!!
Je vais maintenant pouvoir continuer mon petit programme, en cas de besoin de reviendrai par ici.
Encore un grand merci pour ta générosité.
Belle journée.
Je vais maintenant pouvoir continuer mon petit programme, en cas de besoin de reviendrai par ici.
Encore un grand merci pour ta générosité.
Belle journée.
5 mars 2019 à 04:30
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
Modifié le 5 mars 2019 à 08:51
2) il est préférable d'éviter d'employer le presse-papier.
5 mars 2019 à 10:02
Merci pour votre aide et bonne journée.
Modifié le 5 mars 2019 à 15:42
Donc pour copier les valeurs :
RangeDestination.Value = RangeSource.Value
et pour tout copier :
RangeSource.Copy Destination:=CellDestination
7 mars 2019 à 07:17
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