IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Enregistrer des modifications dans une feuille à partir d'une autre


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 28
    Points : 20
    Points
    20
    Par défaut Enregistrer des modifications dans une feuille à partir d'une autre
    Bonjour,

    J'ai une feuille qui s'appelle Modification et une autre qui s'appelle Base qui contient la liste des articles à vendre.

    Dans Modification j'ai une plage qui commence à partir de A10 jusqu'à X10 et qui peut aller jusqu'à la fin de la feuille. Cette plage permet de saisir des modifications éventuelles sur des articles, on retrouve donc toutes les colonnes de Base.

    La colonne A de modification et de Base est réservée pour les N°d'article.

    J'aimerai que quand la personne a terminé d'entrer toutes ses modifications, elle clique sur un bouton et les modifications vont se copier sur les lignes de Base ayant le même numéro d'article.

    Je ne suis même pas sûre que se soit possible. Est ce que quelqu'un a une idée ?

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut heu!...
    bonjour

    n'ayant pas ton classeur sous les yeux je te donne un exemple qui

    copie les données manquante sur la feuille 1 a partir de la feuille 2
    comme ca vite fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub enregistrer_les_modifs()
    'on detecte la derniere ligne utilisée de la feuille2 pour ne pas avoir a boucler sur tout le classeur pour rien 
    DerLigne = Sheets(2).Range("A65536").End(xlUp).Row
    'on va boucler sur toute les lignes a partir de la ligne 10 
    For i = 10 To Sheets(2).Range("A65536").End(xlUp).Row
    'on va chercher si la ligne (i)  de la feuille 1 si elle corespond a la ligne (i) de la page 2 en colonne (A)
    With Sheets(1).Range("a10:a" & DerLigne)
        Set c = .Find(Sheets(2).Range("a" & i), LookIn:=xlValues)
        If Not c Is Nothing Then si c'est trouvé on copie toute la ligne
    Sheets(1).Range("a" & i & ":X" & i).Value = Sheets(2).Range("a" & i & ":X" & i).Value
    End If
    End With
     
    Next
     
    End Sub
    voila
    maintenant au plus simple

    puisque la page 2 est sencée etre la meme que la page1 mais avec les données a jour

    un simple recopie de toute les lignes peut s'envisager


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sub transfert_page2_a_1()
    DerLigne = Sheets(2).Range("A65536").End(xlUp).Row
    for i= 10 to derligne
    sheets(1).range("A"& i &":X"& i)=sheets(1).range("A"& i &":X"& i)
    next
    end sub
    avec la derniere solution si des articles n'existe pas dans la page1 il seront entrés

    voila pour la deuxieme solution
    au plaisir

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    Bonjour,

    Merci beaucoup pour ta réponse par contre j'ai un petit problème. Quand je fais le 1er code rien ne se passe et quand je fais le 2ème ça me copie des lignes vides sur ma base.

    Je pense que le problème (c'est ma faute je l'avais pas mentionné) vient du fait que mes données dans le tableau modification sont appelés par un Worksheet_Change.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Dim LastLig As Long
     
    'Les données seront copiées à partir de la ligne 8 de la feuille Consultation
    LastLig = UsedRange.SpecialCells(xlCellTypeLastCell).Row
    If LastLig >= 8 Then
        Application.EnableEvents = False
        Rows(8 & ":" & LastLig).Clear
        Application.EnableEvents = True
    End If
    'Si la cellule D4 est non vide
    If Target.Value <> "" Then
        With Sheets("Base")
            'On enlève l'éventuel filtre automatique
            .AutoFilterMode = False
            'la ligne de la dernière cellule remplie de la colonne Col de feuille Base
            LastLig = .Cells(.Rows.Count, Col).End(xlUp).Row
            'On filtre sur la colonne 1 de la feuille base, en prenant comme critère la valeur de D4 (Target)
            .Range("A1:X" & LastLig).AutoFilter Field:=Col, Criteria1:=Target.Value
            'On copie les lignes issues du filtre auto (sans la ligne des titres)
            If .Range("A1:A" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
                .Range("A2:A" & LastLig).SpecialCells(xlCellTypeVisible).EntireRow.Copy Range("A8")
            End If
            'On enlève notre filtre automatique
            .AutoFilterMode = False
        End With
    End If
    End Sub
     
    'Evènement Change de la feuille
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Application.ScreenUpdating = False
    Select Case Target.Address
        Case "$D$4": Import 13, Target                                    'On importe les données de Base dont la Colonne 13 est égale à la valeur de D4
        Case "$G$4": Import 12, Target                                    'On importe les données de Base dont la Colonne 12 est égale à la valeur de G4
    End Select
    End Sub
    C'est quelqu'un du forum qui me l'a donné pour une autre feuille mais du coup je l'aime tellement que je l'utilise à toutes les sauces.

    J'ai l'impression que du coup les codes ne détecte aucune donnée sur la feuille.

    Est ce que cette explication peut être plausible ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/12/2013, 16h35
  2. affichage dans cellule d'une feuille à partir d'une autre ?
    Par estivals34300 dans le forum Excel
    Réponses: 2
    Dernier message: 01/11/2007, 00h33
  3. enregistrement des modifs dans la BD
    Par sjtraore dans le forum JSF
    Réponses: 3
    Dernier message: 13/09/2007, 21h05
  4. enregistrer des modifications dans une requête
    Par Lenalyon dans le forum WinDev
    Réponses: 1
    Dernier message: 14/02/2007, 10h58
  5. Afficher des données dans un datagrid à partir d'une base de données MySQL
    Par General_Garrisson dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 13/07/2006, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo