Macro qui supprime des cellules sans qu'on lui demande

cs_granpier Messages postés 2 Date d'inscription mercredi 30 mai 2012 Statut Membre Dernière intervention 5 juin 2012 - 30 mai 2012 à 16:36
cs_granpier Messages postés 2 Date d'inscription mercredi 30 mai 2012 Statut Membre Dernière intervention 5 juin 2012 - 5 juin 2012 à 11:12
Bonjour à tous,

Je travaille actuellement sur un document excel pour le boulot dans lequel j'ai plusieurs feuilles dont une récapitulative (Suivi Obligation).
Ma macro me permet de récupérer une ou plusieurs valeurs dans ces feuilles et de venir les injecter dans Suivi Obligation à des endroits spécifiques.

Mon problème est le suivant: lorsque je lance la macro, elle fait exactement ce que je veux (). En revanche elle me fait "un p'tit bonus pour la route" !

Elle me supprime des cellules remplies de texte qui sont superposées à mes cellules destination.
Pourtant ma macro (que je vous mettrais un peu plus bas) est répétitive pour l'ensemble des feuilles mais n'affecte que quelques colonnes de mon "Suivi Obligation".

La voici enfin!


ThisWorkbook.Worksheets("SIA").Select
ActiveSheet.Range("TOT2_SIA").Select
Selection.Copy

ThisWorkbook.Worksheets("Suivi Obligation").Select
Range("M20").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False






La seule remarque que j'ai pu faire est que les enregistrements de la feuille SIA pour le résultat TOT2_SIA possède moult lignes comparé aux resultats qui ne me modifient pas mes cellules texte.


En attendant votre aide ou vos points de vue, je vous remercie.

Cordialement,

Pierre

3 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 mai 2012 à 17:26
Bonjour,
1) tu développes dobnc sous VBA (VBA/Excel)! Que vient alors faire cette discussion dans la rubrique
Forum > VB.NET et VB 2005
, qui n'a RIEN A VOIR avec VBA ?
Elle aurait dû être ouverte à la rubrique Langages déerivés > VBA. Il s'agit là de la nécessité absolue de respecter un point fondamental de ce forum et nous te serions reconnaissant d'y veiller dorénavant.

2) on ne travaille pas à coups de Select, Activate, etc ... ('on ne cesse de le répéter !), mais directement avec les objets de Excel !
Ce que tu as écrit devrait être écrit ainsi :
ThisWorkbook.Worksheets("SIA").ActiveSheet.Range("TOT2_SIA").Copy destination:= ThisWorkbook.Worksheets("Suivi Obligation").Range("M20")


3) Il est normal qu'une copie "écrase" les données existantes. C'est même le contraire, qui serait plutôt gênant et non souhaitable
Elle le fait pour toute l' "aire" collée concernée.
Si tu ne veux pas cet écrasement, il t'appartient de gérer toit même, en ajoutant d'abord, au dessus des données à ne pas écraser, le nombre de lignes vierges nécessaires (nombre égal au nombre de lignes collées).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 mai 2012 à 17:30
Il serait par ailleurs sans aucun doute utile que tu t'intéresse à la méthode Insert (Range.Insert). Ouvre s'il te plait ton aide VBA sur ce mot.
Cette méthode te permet précisément d'insérer ta copie, plutôt que d'écraser.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_granpier Messages postés 2 Date d'inscription mercredi 30 mai 2012 Statut Membre Dernière intervention 5 juin 2012
5 juin 2012 à 11:12
Merci ucfoutu

Je vais dès à present regarder tout ca et reviendrai vers vous afin de cloturer la discussion si tout fonctionne.


Pierre

PS: Comment puis-je editer la section de la discussion?
0
Rejoignez-nous