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

XL 2016 Contrôle des plages de saisie avant transfert

YANNISE

XLDnaute Junior
Bonjour le forum,

je reviens vers vous pour une amélioration que je voulais apporter à ma macro qui fait le transfert des plages de données depuis la feuille 1 vers la feuille 2

mon amélioration consiste sur un contrôle pour chaque plage remplie avant de faire le transfert

ce contrôle vise deux axes : l'acronyme et la date (dans C26, feuille1), si c'est deux existent déjà dans le tableau dans la feuille 4 alors un message d'alerte apparaitre pour deux choix

soit Oui pour que les anciennes donnes seront écrasées par les nouvelles, ou bien Non pour arrêter la macro.

Mon fichier exemple ci-joint, je vous remercie d'avance pour votre aide.
 

Pièces jointes

  • Classeur2.xlsm
    33.2 KB · Affichages: 8
Dernière édition:

YANNISE

XLDnaute Junior
Bonjour @xUpsilon,

Merci pour votre réponse

Avant de faire une Msgbox il faudra d'abord avoir une macro qui me permet de détecter les doublons lors du transfert.
Ensuite si un doublon existe le Msgbox s'affiche avec oui ou non

oui pour remplacer l'ancien ligne sur le tableau dans la feuille 4 par celle transfert depuis la feuille 1
non pour arrêter l'exécution de la macro de transfert

Merci bcp
 

xUpsilon

XLDnaute Accro
Bonjour,

Au vu des macros déjà présentes dans ton classeur, je pensais que tu réussirais à le faire.
Je ne vais pas te donner de solution toute faite mais voici comment on pourrait fonctionner :
- Boucler sur toutes les lignes de ta feuille de base de données, dans laquelle tu cherches la combinaison Acronyme + Date
- Si la valeur de ton "Acronyme actif" ET "Date Active" sont tous les deux égales aux valeurs de l'acronyme et de la date correspondant à la ligne sur laquelle tu es en train de boucler
- Alors faire apparaitre la Msgbox

VB:
For Ligne = PremiereLigneBDD to DerniereLigneBDD
    If AcronymeActif = FeuilleBDD.Cells(Ligne, ColonneAcronyme) and DateActive = FeuilleBDD.Cells(Ligne,ColonneDate) Then
        If Msgbox("Voulez-vous écraser la donnée déjà existante",vbOKCancel) = vbOK Then
            'Mener les actions souhaitées
        Else
            Exit Sub
        End if
    End if
Next Ligne

Bonne journée,
 

YANNISE

XLDnaute Junior
Bonjour @xUpsilon,

merci pour l'explication, mais excuse mon ignorance car je suis débutant sur VBA

j'ai ajouté votre code à ma macro mais j'ai un message d'erreur "Variable non définie"

je dois définir la variable de la ligne, pourriez-vous svp me dire comment la définir

merci bcp pour votre support.
 

xUpsilon

XLDnaute Accro
Bonjour,

Là je m'excuse, mais je ne donne pas de solution toute crue comme ça.
Savoir ce qu'est une variable et comment la poser, c'est la base de toute programmation. Il va falloir se renseigner sur le VBA et commencer à comprendre un minimum comment ça fonctionne avant que je ne te fournisse une aide, et non pas une solution toute prête.

Bonne journée,
 

xUpsilon

XLDnaute Accro
Bonjour,

Comprendre ce qu'est une macro, ce qu'est une variable, et comment fonctionnent les Conditions IF / les Boucles, ça ne prend pas beaucoup de temps, et ça permet d'avoir un minimum d'esprit critique par rapport à ce que tu pourrais recevoir/discuter dans le futur.

Bonne journée,
 

Discussions similaires

Réponses
7
Affichages
686
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…