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 :

Mise à jour conditionnelle de liaisons entre 3 fichiers


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut Mise à jour conditionnelle de liaisons entre 3 fichiers
    Bonjour,
    voici la description de mon problème.

    J’ai un fichier principal, et deux fichiers secondaires.

    Pour simplifier (en ne parlant que des champs qui sont utiles pour comprendre le problème) Le fichier principal contient comme colonnes :
    - un numéro unique d’identification
    - une description (champ texte)
    - un critère (deux valeurs A ou B possibles)
    - une date.

    J’ai un fichier secondaire pour les valeurs A, un autre pour les B.
    Ces fichiers secondaires (en partie remplis par le principal) contiennent comme champs:
    - un numéro unique d'identification (rappel de celui contenu dans le fichier principal).
    - une date à saisir manuellement

    Au niveau de ce que je désire :
    - le premier fichier modifié sera toujours le principal ; en y saisissant le numéro, la description et le critère A ou B qui correspond. La date n’est pas renseignée.
    - Je dois avoir une liaison avec les autres fichiers, en fonction du critère A ou B le numéro d’identification doit apparaître dans le fichier secondaire correspondant, à la suite des autres numéros déjà enregistrés. Rien ne se passe dans le fichier secondaire qui correspond à l’autre critère.
    - Une date est ensuite ajoutée manuellement dans le fichier secondaire à la ligne qui vient d’être ajoutée : cette date doit être remontée par le biais de la liaison dans la colonne date du fichier principal, et ajoutée au champ date de la ligne correspondant au numéro d’identification.

    J’ai réussi à faire ce traitement pour un critère unique, à l’aide de liaisons entre mon fichier principal et un modèle de fichier secondaire, de cette manière :
    - je remplis mon fichier principal, sauf la date.
    - Dans le fichier secondaire, dans la colonne numéro je compare à la cellule de la ligne correspondante du fichier principal ; s’il y a un numéro entré je le recopie (sinon la case reste blanche grâce à une mise en forme conditionnelle).
    - Je ramène de même la date du fichier secondaire vers le principal, en la recopiant dès qu’elle existe (et donc qu’elle a été entrée) sur mon fichier principal (toujours comparaison par rapport aux lignes) – sinon s’il n’y a pas de date entrée elle reste blanche grâce à la mise en forme conditionnelle.

    Je n’arrive pas à adapter cette méthode au cas avec deux critères car je compare les tableaux ligne par ligne. Il faudrait :
    - que je recopie le numéro d’identification principal dans le fichier secondaire correspondant au critère entré dans ma cellule critère (pas d’action sur l’autre fichier secondaire).
    - Qu’une fois que la date est saisie dans ce fichier secondaire, elle soit recopiée dans mon fichier principal pour remonter l’info (à l’aide du numéro d’identif).

    Je suis débutant et je ne sais pas comment m’y prendre, que me conseilleriez-vous ?
    Merci d'avance pour vos réponses

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour la méthode... (...)
    Comment démarres-tu ta recherche ? Depuis le fichier principal ou depuis le/les fichiers secondaires ?
    Je précise ma question : Au départ, où lis-tu le numéro d’identification pour aller le comparer dans l'autre fichier ? Tu lis dans le fichier 1 puis tu recherches ce N° dans le fichier secondaire ou le contraire ?

    Seconde question : Quand tu dis que tu as deux critères A ou B, ces critères sont-ils dans la même colonne ?

    Troisième question : Tu dis
    "- Une date est ensuite ajoutée manuellement dans le fichier secondaire à la ligne qui vient d’être ajoutée"
    A quel moment ajoutes-tu cette ligne ?

  3. #3
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Pour te répondre:
    Mon problème vient justement du fait que j'ai deux critères (critère étant l'entête et pouvant pour chaque ligne prendre la valeur A ou B).
    Les descriptions de fichiers que j'ai faites correspondent aux entêtes de colonne, l'utilisateur qui travaille sur les fichiers travaille ligne par ligne pour chaque affaire.

    Le fichier principal est rempli en premier,avec tous les champs de la ligne sauf la date.

    En fonction de la valeur du critère qu'il remplit sur cette ligne (A ou B), le numéro d'identification correspondant doit "apparaître" sur le fichier secondaire adéquat (A ou B selon le critère), à la suite des numéros précédents.Pour répondre à ta question c'est donc chacun des fichiers A et B qui doivent lire le principal, et récupérer les numéros pour les lignes qui ont respectivement pour critères A et B.

    Sur chacun de ces fichiers A et B,un utilisateur (différent sur chacun des fichiers) renseignera la date à l'aide d'informations qu'il possède (quand je parlais de la ligne ajoutée,je parlais de celle avec le numéro qui vient d'apparaître sur le fichier secondaire mais pour laquelle il n'y a encore aucune date de renseignée).

    Pour terminer c'est le fichier principal qui doit récupérer ces dates pour chacun des numéros, et se mettre à jour.
    Le but est donc de scinder en deux les informations correspondant à chacun des critères afin qu'elles soient renseignées par quelqu'un possédant l'info,puis de les remonter; je dois m'adapter à cette problématique et je ne peux pas la modifier.

    Merci pour votre aide,
    t

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par drthodt
    Sur chacun de ces fichiers A et B, un utilisateur (différent sur chacun des fichiers) renseignera la date à l'aide d'informations qu'il possède
    Donc chaque utilisateur (utilisateur du fichier A ou utilisateur du fichier B) a un critère de recherche...
    Ai-je bien compris ? Je n'ai pas l'impression...

  5. #5
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Non personne ne recherche rien il y a seulement des saisies de données et des champs qui doivent se mettre à jour automatiquement.

    J'ai trois fichiers avec trois utilisateurs différents.
    Tu as le fichier principal avec comme colonnes: numéro | description | critère | date
    avec critère qui peut être égal à A ou B.
    Un fichier secondaire A avec comme colonnes: numéro | date
    Idem pour le fichier secondaire B.
    Un utilisateur distinct par fichier.

    1. Dans un premier temps l'utilisateur du fichier principal rempli tous les champs de la ligne,sauf date (ex. 15 | vert | A | [champ vierge] ).

    Le fichier secondaire A doit contenir tous les numéros du fichier principal pour lequel l'utilisateur aura renseigné la colonne critère avec A (ces numéros doivent être récupérés par une liaison).
    Ici l'action à automatiser: récupérer sur une nouvelle ligne du fichier principal (dès qu'elle est saisie) la valeur du numéro (ici 15) et la recopier sur la première ligne vide du champ numéro du fichier secondaire qui liste toutes les valeurs correspondant au critère renseigné sur le fichier principal (ici A).
    Dans mon exemple comme le critère de ( 15 | vert | A | [champ vierge] ) vaut A, mon fichier secondaire A vaudra ( 15 | [cellule vide car rien n'a été saisi]).
    Si critère avait valu B sur mon fichier principal, c'est mon fichier secondaire qui aurait été rempli avec la valeur 15.

    2. Un utilisateur renseigne la date sur mon fichier secondaire A: ma ligne passe à ( 15 | 22/11/2007).Cette date doit être récupérée ensuite et mise à jour dans le champ vierge de mon fichier principal,qui doit devenir (15 | vert | A | 23/11/2007).

    A chaque nouvelle ligne saisie dans mon fichier principal, je dois donc:
    - recopier mon numéro dans le fichier A ou B en fonction de la valeur du critère (c'est pour ça que j'ai appelé mon sujet mise à jour conditionnelle), à la suite des numéros déjà dans le fichier.
    - dès que la date correspondante au numéro est saisie dans mes fichiers A ou B, mettre à jour le champ date de mon fichier principal en la récupérant sur le fichier secondaire correspondant.
    En espérant avoir mieux décrit le problème,
    t

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ok. Je comprends mieux (?!?...) enfin, je crois.
    Donc, tous les tests doivent se faire en cours de saisie.
    En un premier temps, le changement ou la saisie d'une valeur sur la dernière ligne du fichier principal entraînera la copie de la cellule de la colonne Numéro de la même ligne dans le fichier secondaire A ou B selon le critère lu ds la colonne Critère
    Tu dis déjà si c'est bien ça, on verra ce qu'on fait en un deuxième temps pour la date...
    A+

  7. #7
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Voilà c'est exactement ça
    Merci déjà de faire l'effort de me comprendre
    A+

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ouf !
    Bref, ton code va donc se trouver dans les événements de la feuille de calculs
    Je te passe ça en attendant, là tout de suite, je suis occupé...
    Tu testes.
    Code à placer dans la feuille de code de la feuille de calculs "Principal"
    A+

  9. #9
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    ok pas de souci ça peut attendre un peu
    Merci à toi quand même
    A+

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je te mets "Code à tester" mais je ne t'ai visiblement pas mis le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then
        If Cells(Target.Row, 1) = Empty Or Cells(Target.Row, 2) = Empty Then
                MsgBox "Veuillez saisir les colonnes """ & "numéro et description""" & " avant de saisir le critère"
                Target.Select
            Else
        End If
    End If
    End Sub
    Regarde déjà comment tu peux utiliser ça

  11. #11
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Merci pour ton code mais je ne sais pas si tu as saisi ma question, j'ai pas vraiment besoin de faire des fichiers "ergonomiques" avec des msgbox etc... c'est simplement pour de la saisie.Plus c'est simple mieux ce sera.

    Trois utilisateurs sur trois fichiers différents (le principal,celui listant tous les numéros du principal ayant un critères A,et celui listant tous les numéros du principal ayant un critère B).
    L'utilisateur du fichier principal saisit toutes le s infos de la ligne sauf la date.
    Le numéro est recopié dans le fichier correspondant (le A si dans le fichier principal le critère est à A,le B si dans le fichier principal le critère vaut B).

    Puis dans un deuxième temps dès que l'utilisateur du fichier secondaire (A ou B) ajoute la date à côté du numéro correspondant, celle-ci doit être recopiée dans la cellule date de la ligne initiale sur le fichier principal.
    Je n'ai pas besoin d'autre chose que ça (pour le reste je me débrouillerais ) Merci quand même pour ton aide et le temps que tu m'accordes.
    A+,
    t

  12. #12
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Pour mettre en valeur le fait que la date n'est pas saisie une mise en forme conditionnelle avec une couleur me suffira, mon souci étant comment scinder la recopie des numéros dans deux fichiers distincts en fonction du critère.

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    C'était juste pour le principe. Hier, je n'avais pas le tps de m'étendre. Je t'ai mis l'événement dans lequel tu pouvais tester ta saisie.
    A partir du moment où une cellule de la bonne colonne est modifiée, qu'elle n'est pas vide, alors tu fais ce que tu as à faire en remplacement de mon msgbox.
    Explication de mes tests : Je pré-suppose toujours qu'une fausse manip ou une erreur de saisie est possible.
    Dans ton cas, je vérifierais même que la ligne de la saisie est bien la dernière ligne renseignée de la feuille de calculs.
    Ceci pour expliquer cela
    Donc, on a notre bonne cellule, la dernière saisie, et donc le critère.
    Reste à copier le N° dans le bon fichier.
    Je te propose ce code, tu devras adapter les noms de classeurs et de feuilles.
    Consiste à copier le seul N° d'identification du fichier principal sur la première ligne vide du fichier correspondant au critère saisi.
    Je considère que le fichier principal est celui qui contient cette macro, et que cette macro se trouve dans la feuille de code de la feuille dans laquelle s'effectue la saisie du critère.
    Ouf ! Juste pour montrer ce que j'ai compris.

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
    Dim FL3 As Worksheet
        Set FL1 = ThisWorkbook.ActiveSheet
        'tu adaptes le nom de la feuille du Classeur secondaire A
        Set FL2 = Workbooks("A.xls").Worksheets("Feuil1")
        'tu adaptes le nom de la feuille du Classeur secondaire B
        Set FL3 = Workbooks("B.xls").Worksheets("Feuil1")
        If Target.Column = 3 Then
            If not Cells(Target.Row, 1) = Empty Or Cells(Target.Row, 2) = Empty _
                 or Or Cells(Target.Row, 3) = Empty Then
                    Critere = Trim(Target) 'je supprime les éventuels espaces saisis par erreur
                Else
                    'je quitte si l'une des cellules des colonnes A ou B ou C est vide
                    'Tu n'es pas obligé de mettre ça mais je te le conseille (!)
                    Exit Sub
            End If
        End If
         Select Case Critere
            Case "A"
                'Recherche de la première ligne vide dans le classeur B
                NoLigne = FL2.Range("A65535").End(xlUp).Row + 1
                'Copie de la cellule A & NoLigne dans la classeur secondaire B
                FL2.Range(NoLigne, 1) = FL1.Cells(Target.Row, 1)
            Case "B"
                'Recherche de la première ligne vide dans le classeur B
                NoLigne = FL3.Range("A65535").End(xlUp).Row + 1
                'Copie de la cellule A & NoLigne (colonne "Numero") dans le classeur secondaire B, "feuil1", colonne "Numero"
                FL3.Range(NoLigne, 1) = FL1.Cells(Target.Row, 1)
            Case Else
                 'Le critère saisi n'existe pas
                 MsgBox "erreur de saisie, les critères doivent être A ou B"
        End Select
     
    End Sub
    Teste déjà ça.
    Tu dis

  14. #14
    Membre habitué Avatar de Currahee
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 157
    Points : 130
    Points
    130
    Par défaut
    Citation Envoyé par drthodt Voir le message
    Pour mettre en valeur le fait que la date n'est pas saisie une mise en forme conditionnelle avec une couleur me suffira, mon souci étant comment scinder la recopie des numéros dans deux fichiers distincts en fonction du critère.
    J'ai bien pigé ton pb il me semble. J'ai des projets similaires en cours, mais moi je code tout en vba. J'ai des fichiers de planification avec des infos, que je dois "descendre" dans des fichiers de production. Par contre je ne "remonte" pas comme toi (avec ta date) d'infos des fichiers de production vers les fichiers de planification.

    J'aime bien réinventer la roue, et chez moi tout est codé en vba (je suis pas fan des fonctions excel ) Mais sans code, si tu arrives à lier deux fichiers ensemble avec un critère, pourquoi ne pas descendre dans tes deux fichiers secondaires toutes les lignes du fichier principal, puis de faire en sorte avec une mise en forme conditionnelle propre cette fois à chaque fichier d'éliminer les lignes ne correspondant pas au critère correspondant à ce fichier secondaire ?

    La même piste avec un peu de code : pour un fichier secondaire donné, tu récupère toutes tes lignes, puis lance un code de suppression des lignes ne correspondant pas au critère du fichier (repérage dernière ligne du fichier renseigné, boucle de test-suppression sur toutes les lignes tant que ta ligne n'es pas vide)
    "Ne soyez rien, devenez sans cesse"

  15. #15
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par Currahee Voir le message
    J'ai des projets similaires en cours, mais moi je code tout en vba. J'ai des fichiers de planification avec des infos, que je dois "descendre" dans des fichiers de production. Par contre je ne "remonte" pas comme toi (avec ta date) d'infos des fichiers de production vers les fichiers de planification.
    C'est exactement ça, hormis que j'ai les infos et ce sont les autres personnes qui réalisent la planif, le tout devant "remonter" pour avoir les infos de date et contrôler l'avancement.

    Citation Envoyé par Currahee Voir le message
    J'aime bien réinventer la roue, et chez moi tout est codé en vba (je suis pas fan des fonctions excel ) Mais sans code, si tu arrives à lier deux fichiers ensemble avec un critère, pourquoi ne pas descendre dans tes deux fichiers secondaires toutes les lignes du fichier principal, puis de faire en sorte avec une mise en forme conditionnelle propre cette fois à chaque fichier d'éliminer les lignes ne correspondant pas au critère correspondant à ce fichier secondaire ?
    J'y suis arrivé avant de venir poser ma question sur le forum,je compare une à une les lignes de mon fichier secondaire avec le premier,je recopie ce qu'il me faut puis "blanchit" le reste, le souci étant que mon listing est parsemé de lignes blanches: dans ce cas il faudrait un tri automatique ou quelque chose comme ça.

    Citation Envoyé par Currahee Voir le message
    La même piste avec un peu de code : pour un fichier secondaire donné, tu récupère toutes tes lignes, puis lance un code de suppression des lignes ne correspondant pas au critère du fichier (repérage dernière ligne du fichier renseigné, boucle de test-suppression sur toutes les lignes tant que ta ligne n'es pas vide)
    C'est une autre solution aussi, peut-être même meilleure mais je n'y connais rien en VBA, saurais-tu m'aider à faire ceci (remplir mon fichier secondaire puis supprimer toutes les lignes qui n'ont pas à s'y trouver).Dans ce cas-là il me manquera juste à remonter la date correspondante.

    Citation Envoyé par ouskel'n'or Voir le message
    Teste déjà ça.
    Tu dis
    J'ai bien testé ton code:
    j'ai le MsgBox "erreur de saisie, les critères doivent être A ou B" qui apparaît pour TOUTES les cellules dans lesquelles j'essaie d'écrire,quelle que soit la colonne.
    Idem quand j'essaie de mettre autre chose que A ou B dans ma colonne critère.
    Par contre quand je remplis Critère avec A ou B, j'ai l'erreur suivante: La méthode Range de l'objet Worksheet a échoué.

    Merci en tout cas pour ton fragment de code ça me permet de comprendre un peu mieux comment on sélectionne des cellules etc avec du code, et merci pour vos efforts

  16. #16
    Membre habitué Avatar de Currahee
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 157
    Points : 130
    Points
    130
    Par défaut
    C'est une autre solution aussi, peut-être même meilleure mais je n'y connais rien en VBA, saurais-tu m'aider à faire ceci (remplir mon fichier secondaire puis supprimer toutes les lignes qui n'ont pas à s'y trouver).Dans ce cas-là il me manquera juste à remonter la date correspondante.
    Un petit bout de code légèrement dynamique pour t'initier au vba (tu peux choisir la colonne critère ici 3, ton critère ici A, ta feuille ici Donnees). Code à lancer après ta récupération de toutes les infos de ton fichier principal, sans les mettre en forme.

    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
    Public Sub Suppression_Lignes()
     
        Dim numero_ligne As Integer
        Dim feuille As Worksheet
        Dim critere As String
        Dim colonne_critere As Integer
     
        ' Initialisation compteur ligne
        numero_ligne = 1
     
        ' Initiliasition feuille a traiter
        Set feuille = ThisWorkbook.Worksheets("Donnees")
     
        ' Initialisation colonne critere
        colonne_critere = 3
     
        ' Initialisation critere a supprimer
        critere = "A"
     
        ' Tant que l'identifiant en colonne 1 n'est pas vide
        While feuille.Cells(numero_ligne, 1) <> ""
            If feuille.Cells(numero_ligne, colonne_critere).Value = critere Then
                ' Suppression ligne
                feuille.Rows(numero_ligne).Delete
            Else
                ' Pas de suppression, ligne suivante
                numero_ligne = numero_ligne + 1
            End If
        Wend
     
    End Sub
    "Ne soyez rien, devenez sans cesse"

  17. #17
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ok pour l'erreur de saisie, j'ai oublié deux lignes ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        If Target.Column = 3 Then
            If not Cells(Target.Row, 1) = Empty Or Cells(Target.Row, 2) = Empty _
                 or Or Cells(Target.Row, 3) = Empty Then
                    Critere = Trim(Target) 'je supprime les éventuels espaces saisis par erreur
                Else
                    'je quitte si l'une des cellules des colonnes A ou B ou C est vide
                    'Tu n'es pas obligé de mettre ça mais je te le conseille (!)
                    Exit Sub
            End If
            else
                Exit sub
        End If
    Tu peux modifier et tester de nouveau ?

  18. #18
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Ok, maintenant je peux remplir toutes mes cases sans souci, mais j'ai toujours l'erreur: la methode 'range' de l'objet '_Worksheets' a échoué.

    Quand je clique sur débugger c'est cette partie qui est surlignée jaune: "FL2.Range(NoLigne, 1) = FL1.Cells(Target.Row, 1)".

    Petite question perso: j'arrive à comprendre FL2.Range(NoLigne, 1) - qui correspond à la cellule de FL2 qui a pour coordonnées NoLigne pour la ligne et 1 comme colonne; que représente Cells(Target.Row, 1)?
    Merci.

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Erreur de jeunesse Corrige effectivement ces deux lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                FL2.Cells(NoLigne, 1) = FL1.Cells(Target.Row, 1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                FL3.Cells(NoLigne, 1) = FL1.Cells(Target.Row, 1).Value
    Tu avais bien vu

  20. #20
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Merci ça marche impec!
    Autre problématique: pour que ça marche je suis obligé d'avoir mes fichiers secondaires ouverts, j'ai besoin d'appliquer le même traitement même si ces fichiers ne sont pas ouverts (et dans ce cas qu'ils se mettent à jour à l'ouverture).

    Ensuite plus qu'à remonter la date des fichiers secondaires vers le principal

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. [PPT-2013] Mise à jour automatique des liaisons avec un fichier excel 2013
    Par Aby55 dans le forum Powerpoint
    Réponses: 1
    Dernier message: 08/04/2015, 13h48
  2. Réponses: 1
    Dernier message: 02/12/2005, 14h07
  3. mise à jour automatique de champs entre 2 tables
    Par romdyane dans le forum Access
    Réponses: 5
    Dernier message: 11/10/2005, 18h51
  4. Mise à jour d'une table avec un fichier csv
    Par blackangel dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h46
  5. Mise à jour conditionnelle
    Par Tapioca dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/06/2004, 08h48

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