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

VBA-Modifie Donnee

  • Initiateur de la discussion Initiateur de la discussion Celeda
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Celeda

XLDnaute Barbatruc
Bonjour,

Voici une base de donnée Feuil1 (feuille maîtresse)

Dans cette base, il y a la colonne E -code: 1 ou 0.

La Feuil1-1 représente toutes les données code 1 uniquement (feuille esclave).

En fonction de la donnée en colonne B de Feuil1, toutes les autres données sont modifiées manuellement dès actualisation des informations extérieures fournies.
(Les données de la colonne B sont figées, intouchables)

Il s’agit donc de faire les modifs sur les deux tables en même temps pour actualiser Feuil1-1 des modifs apportées dans Feuil1, code 1.
Quand tout va bien, l’actualisation des données se passent bien mais quand tout va mal (trop de travail, trop d’appels, trop de litiges et j’en passe), les modifs ne s’effectuent pas ou mal (erreur de ligne, ect;😉 et donc avec le temps des différences dans les deux bases apparaissent dans les statistiques mensuelles et après pour retrouver les erreurs, cela engendre un travail de vérif técédéen par bibi.

Alors, j’ai pensé qu'une macro pourrait modifier simultanément les données de Feuil1-1, et le travail s’en trouverait grandement allégé.

Pourriez-vous svp regarder cela et m’aider ?
Un grand merci à l’avance.
 

Pièces jointes

Re : VBA-Modifie Donnee

bonjour Celeda,

Les données de la colonne B sont -elles toujours uniques? Peut-on toujours s'appuyer sur ces références pour retrouver les lignes en Feuil1 -1?

A+
 
Re : VBA-Modifie Donnee

Bonjour Celeda, Hasco

Je me suis posé la même question qu'Hasco.
Dans l'hypothèse que oui (références uniques), essaye avec ce code à coller sur la Feuil1 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'déclaration des variables
Dim colBfeuilEsclave As Range, cellRecherche As Range

    'si c'est une cellule de la colonne B qui vient d'être changée, quitter la macro
    If Not Application.Intersect(Range("B:B"), Target) Is Nothing Then Exit Sub
    
    'si c'est une cellule de la première ligne qui vient d'être changée, quitter la macro
    If Not Application.Intersect(Range("1:1"), Target) Is Nothing Then Exit Sub
    
    Set colBfeuilEsclave = ThisWorkbook.Sheets("Feuil1-1").Range("B:B")
    
    'rechercher l'index de la ligne qui vient d'être changé dans la colonne B de la feuille esclave
    Set cellRecherche = colBfeuilEsclave.Find(Range("B" & Target.Row), , xlValues, xlWhole)
    
    'si on a retrouvé la référence, appliquer la modification
    If Not cellRecherche Is Nothing Then cellRecherche.Offset(0, Target.Column - 2) = Target
End Sub
a+
 
Dernière édition:
Re : VBA-Modifie Donnee

Re,

Hello Michel,

Dans le module de code de la feuille.

travail dans un seul sens Feuil1 vers Feui1-1
ne rajoute pas les nouvelle référence. Le dire si besoin.


Code:
[COLOR=BLUE]Option[/COLOR] [COLOR=BLUE]Explicit[/COLOR]
[COLOR=BLUE]Dim[/COLOR] posLigne [COLOR=BLUE]As[/COLOR] [COLOR=BLUE]Variant[/COLOR]
[COLOR=BLUE]Dim[/COLOR] Ligne [COLOR=BLUE]As[/COLOR] [COLOR=BLUE]Long[/COLOR]
[COLOR=BLUE]Private[/COLOR] [COLOR=BLUE]Sub[/COLOR] Worksheet_Change([COLOR=BLUE]ByVal[/COLOR] Target [COLOR=BLUE]As[/COLOR] Range)
    [COLOR=BLUE]If[/COLOR] Target.Column > 10 [COLOR=BLUE]Then[/COLOR] [COLOR=BLUE]Exit[/COLOR] [COLOR=BLUE]Sub[/COLOR]
        Ligne = Target.Row
        [COLOR=BLUE]If[/COLOR] [COLOR=BLUE]Not[/COLOR] IsEmpty(Cells(Ligne, 2)) [COLOR=BLUE]And[/COLOR] [COLOR=BLUE]Not[/COLOR] Cells(Ligne, 5) <> 1 [COLOR=BLUE]Then[/COLOR]
            posLigne = Application.Match(Cells(Ligne, 2), Sheets([i]"Feuil1-1"[/i]).Columns(2), 0)
            [COLOR=BLUE]If[/COLOR] [COLOR=BLUE]Not[/COLOR] IsError(posLigne) [COLOR=BLUE]Then[/COLOR]
                Application.EnableEvents = [COLOR=BLUE]False[/COLOR]
                Sheets([i]"Feuil1-1"[/i]).Cells(posLigne, Target.Column) = Target
                Application.EnableEvents = [COLOR=BLUE]True[/COLOR]
            [COLOR=BLUE]End[/COLOR] [COLOR=BLUE]If[/COLOR]
        [COLOR=BLUE]End[/COLOR] [COLOR=BLUE]If[/COLOR]
    
[COLOR=BLUE]End[/COLOR] [COLOR=BLUE]Sub[/COLOR]

A+
 
Re : VBA-Modifie Donnee

Bonjour,

MERCI !!!!

Oui la colonne B est unique et ne peut pas changer.

Je viens de tester les deux :c'est parfait.
A tous les deux un ouf de soulagement : merci de votre aide.🙂🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
718
  • Question Question
XL 2019 VBA
Réponses
10
Affichages
1 K
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
903
Réponses
3
Affichages
430
Réponses
16
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…