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

Excel Discussion :

Liaison entre feuilles excel


Sujet :

Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut Liaison entre feuilles excel
    Bonjour,

    J'aurais voulu savoir comment faire pour faire une liaison entre 2 feuilles excel du même classeur.

    Je m'explique, j'ai beau faire un coller avec liaison d'une ligne ou d'une colonne si je supprime la ligne de la premiere feuille, elle ne se supprime pas dasn l'autre.

    Je voulais savoir si il etait possible (soit par manip. soit par vba) que lorsque je supprime une ligne de la premiere feuille excel, la meme soit supprimer sur la feuille suivante.

    Merci d'avance !

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Je ne pense que ce soit possible, a part d'ecrire une macro

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    ET il faudrait que je fasse une macro qui lorsque je supprime la ligne 159 sur feuille 1 elle me vire cette meme ligne sur feuille 2 ?

    Je suis désolé mais je suis vraiment un noob en VBA une idée du code ?

    Merci pour la réponse

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour Tpcforever,

    Bien sûr il y a la solution d'une petite procédure en VBA.

    Mais avant, comme vous évoquez la possibité d'un manipulation sur Excel, il en existe une très simple :

    -La feuille 1 est active.
    -Vous appuyez sur la touche Ctrl et sans la lâcher vous cliquez sur la Feuille 2 (vous pouvez bien sûr chose dans le sens inverse (feuille2 puis feuille1).
    -Vous cliquez avec le bouton droit sur le N° de ligne que vous voulez supprimer (vous pouvez même en sélectionner plusieurs) puis clic sur "Supprimer".
    -Clic droit sur l'une des 2 feuilles (n'importe laquelle) puis cliquer sur "Dissocier les feuilles".

    Cette manipulation fonctionne avec un groupe de feuilles sélectionnées quel que soit le nombre et avec d'autres fonctions que la suppression d'une ligne ou de plusieurs.

    Amicalement.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Merci !

    Je ne connaissais pas, bien pratique mais pas automatisable néanmois sa me depanne bien merci !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re Tpcforever,

    Merci pour votre réponse.

    Si cela vous convient, très bien, mais comme je le précise on peu également le faire à travers un peu de code en VBA.

    Si vous préférez vous le dîtes.

    Amicalement.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Je voudrais bien le bout de code en VBA svp

    Sinon j'avais une 2eme question ou c'est plutot comment ecrire cela en VBA

    J'ai toujours mes 2 feuilles lol et je voudrais faire un scan de la colonne B de la feuille 2 (c'est un exemple) et lorsque qu'il y a une cellule vide il supprime la ligne de cette feuille et celle de la feuille 1.

    Merci

    edit : J'utilise aussi la fonction BDNBVAL pour savoir mon nombre de ligne dans ma premiere feuille, le hic c'est qu'il y a vers les 19k lignes donc la fonction met un "peu" de temps (presque 10 min ) et du coup il est peu etre possible d'avoir une boucle incrementé qui s'arrete a la premiere cellule vide et qui sort le nombre de ligne parcouru, c'est faisable ?

    RE merci

    edit 2 : Pourquoi faire compliqué lol avec NBVAL (tout cours c'est plus rapide merci lol)

  8. #8
    Invité
    Invité(e)
    Par défaut
    Cette fois j'ai besoin d'un peu de précision car votre réponse semble exprimer plusieurs besoins et pourtant j'ai l'impression qu'il n'y en a qu'un ou deux.

    Vous supprimez une données sur la feuille 2 et vous voulez que la ligne correspondante soit supprimée ainsi que la même ligne sur la feuille 1, c'est bien le problème à résoudre ?

    D'autre part vous voulez connaître en permanence le nombre de lignes de votre tableau et supprimer la fonction BDNBVAL ?

    Si oui pas de problème. Je ne peux pas affirmer que je vous adresserai le code ce soir mais au pire demain.

    Amicalement.
    Dernière modification par Invité ; 12/03/2007 à 19h54.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Désolé que se ne soit pas clair, mais j'ai rajouté un besoin sans trop de précision.

    En faite je voudrais bien 2 codes disctints :
    - L'un qui permet de supprimer la même ligne mais sur 2 feuilles
    - L'autre qui me permettrais de "scanné" une colonne d'une feuille et lorsque que la cellule est vide il supprime la ligne correspondante et aussi celle d'une autre feuille
    ( exple : la cellule B8 sur feuille2 est vide il supprime la ligne 8 de la feuille 1 et de la feuille 2)

    Pour BDNBVAL, rien a voir en faite j'ai utilisé cette fonction pour compter le nombre de ligne que j'avais et le temps de calcul etait tres long, mais j'ai trouvé la formule NBVAL (sans discintion de base de données) qui est plus rapide donc plus besoin d'aide (pour se problème de comptage de ligne, il possible d'utiliser la dite fonction en VBA ?)

    Merci d'avance jacques_jean

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour tpcforever,

    Pour être sûr de ne pas faire quelque chose qui ne vous convient pas :

    -pour la 1ère parte : 1 boite de dialogue vous demande da taper le N° de ligne à effacer. Le contenu de la cellule en colonne B s'affiche et vous cliquez sur OK pour supprimer (vous avez aussi la possibilité d'annuler). La ligne est supprimée sur les 2 feuilles. Est-ce bien ce qui vous conviendrait ?

    -pour la 2ème partie, une précision : dans votre exemple la cellule B8 est vide sur la feuille 2. Mais feuille est-ce que cette feuille contient au moins une autre colonne avec une donnée obligatoirement présente ?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Pour la premiere partie : Nikel

    Pour la deuxieme partie oui la colonne A8 (par exple contient des données) et de meme pour la feuille 1 qui est "pleine"

  12. #12
    Invité
    Invité(e)
    Par défaut
    Re,

    Ok, je démarre.

    Mais quand même une question à laquelle j'aurais dû penser en premier lieu :

    -on peut penser que lorsque vous décidez de supprimer une ligne vous avez un critère pour le faire.
    -si ce critère peut être clairement identifié par une ou plusieurs données sur votre feuille et dans ce cas taper ce ou ces critère(s) dans la boite de dialogue pourrait sans doute vous faire gagner du temps par rapport au fait d'être obligé de trouver le N° de ligne.

    Si c'est le cas n'hésitez pas à me le confirmer.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    je crois que justement la seconde partie est le critère et comme votre technique de lier les onglets marche tres bien je pense que je n'ai pas besoin de la premiere partie si je doit faire du cas par cas ne vous embetez pas je le ferais "à la main"

    En tout cas merci beaucoup pour votre aide et votre compréhension (surtout qu'il est vrai que des fois j'ai un peu de mal à m'exprimer )

  14. #14
    Invité
    Invité(e)
    Par défaut
    Re Tpcforever,

    Et bien je vous propose la 2ème partie :

    (excusez-moi éventuellement pour les précisions ci-dessous, mais je les donne simplement parce que je ne sais pas si vous avez déjà utilisé des macros).

    1) faire une sauvegarde de votre fichier (soit sur le même répertoire mais en ajoutant par exemple 1 caractère au nom du fichier, soit sur un autre support).
    2) vous ouvrez le fichier et vous regardez dans "Outils", "Macro", "Sécurité".
    -si "Niveau sécurité haut" est coché vous ne pourrez pas utiliser les macros.
    -si vous cochez "Niveau sécurité moyen" vous pourrez utiliser les macros mais à chaque ouverture du fichier vous aurez un message vous demandant de valider ou non.
    -si vous cochez "Niveau sécurité bas" vous pourrez utiliser les macros directement.

    C'est ce dernier niveau que j'ai coché depuis des années et je n'ai jamais eu de problèmes. Le tout est de ne pas télécharger n'importe quoi, n'importe où.

    Ensuite vous cliquez sur "Outils" puis "Macro" puis "Visual basic editor".
    Vous cliquez sur "Insertion" puis "Module".
    Double-clic sur "Module1" et dans la fenêtre de droite vous collez le texte ci-dessous.

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Option Explicit
    Dim mf1, mf2 As Object
    Dim pl, lsup As Long
    Dim cdata1, cdata2 As Byte
    Dim data1, data2 As Variant
    Dim text1 As String
     
    Sub Supp_enreg1()
    'Variables contenant les noms des 2 feuilles(vous pouvez modifier)
    Set mf1 = Sheets("Feuil1")
    Set mf2 = Sheets("Feuil2")
    'Variable contenant le N° de 1ère ligne de données(vous pouvez modifier)
    pl = 2
    'Variable contenant le N° de colonne contenant les données obligatoires
    '(vous pouvez modifier)
    cdata1 = 1
    'Variable contenant le N° de colonne contenant les éventuelles données qui 
    'ont été effacées(vous pouvez modifier)
    cdata2 = 2
     
     
    lsup = 0
    Trouv_valnul:
     
    data1 = mf2.Cells(pl, cdata1)
    If IsEmpty(data1) Then
    GoTo Aff_result
    End If
     
    data2 = mf2.Cells(pl, cdata2)
    If IsEmpty(data2) Then
    mf2.Activate
    Rows(pl).Select
    Selection.Delete Shift:=xlUp
    mf1.Activate
    Rows(pl).Select
    Selection.Delete Shift:=xlUp
    lsup = lsup + 1
    End If
     
    pl = pl + 1
    GoTo Trouv_valnul
     
    Aff_result:
    If lsup > 1 Then
    text1 = "lignes supprimées"
    Else
    text1 = "ligne supprimée"
    End If
     
    Range("A1").Select
    mf2.Activate
    Range("A1").Select
    MsgBox lsup & " " & text1 & Chr(10) & Chr(13) _
                & "Cliquez sur OK pour fermer l'application.", _
                vbOKOnly + vbInformation + vbApplicationModal, "Information"
    End Sub
    Pour essayer vous pouvez ensuite cliquer sur Outils puis Macro puis Exécuter.
    Vous pourrez aussi ajouter par la suite une touche de raccourci ou un bouton pour lancer la procédure.

    Pour la 1ère partie, c'est vous qui voyez. Si vous changez d'avis, n'hésitez pas.

    Amicalement.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup !

    Je test ce code cette aprem et je vous tiens au courant !

  16. #16
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Je remonte ce sujet car la "partie 1" m'interesse en VBA.
    jacques_jean, serait-il possible que tu m'envoies un bout de code qui change automatiquement la feuille 2 (voir la 3,4,5 etc...) en se basant sur la feuille 1 ?

    (j'ai besoin de ne récupérer que les 4 premières colonnes de la feuille 1 sur 12 autres feuilles)

    Je te remercie d'avance si tu passes un peu de temps dessus,

    Cordialement,
    Gladsponk

  17. #17
    Invité
    Invité(e)
    Par défaut
    Bonjour Gladsponk,

    Voici un exemple vite fait.
    Il est prevu pour une plage qui est copiée à partir de la même cellule sur les 12 autres feuilles.

    Si ce n'était pas le cas dîtes le moi.

    Bien sûr si vous avez renommé les feuilles au lieu de garder le nom par défaut modifiez ces noms.

    Dans la fenêtre VBA vous insérez un module et vous copiez le code ci-dessous :

    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
    Option Explicit
    Sub Copy_plage()
    Dim pl, dl, plc As Long
    Dim pc, dc, pcc As Integer
     
    '1ère ligne de la plage à copier (modifier si nécessaire)
    pl = 2
    'dernière ligne de la plage à copier (modifier si nécessaire)
    dl = 12
    '1ère colonne de la plage à copier (modifier si nécessaire)
    pc = 1
    'dernière colonne de la plage à copier (modifier si nécessaire)
    dc = 4
    '1ère ligne de la plage qui reçoit la copie (modifier si nécessaire)
    plc = 2
    '1ère colonne de la plage qui reçoit la copie (modifier si nécessaire)
    pcc = 1
     
        Sheets("Feuil1").Activate
        Range(Cells(pl, pc), Cells(dl, dc)).Select
       Selection.Copy
       Sheets(Array("Feuil13", "Feuil12", "Feuil11", "Feuil10", "Feuil9", "Feuil8", "Feuil7" _
            , "Feuil6", "Feuil5", "Feuil4", "Feuil3", "Feuil2")).Select
        Sheets("Feuil2").Activate
        Range(Cells(plc, pcc), Cells(plc, pcc)).Select
        ActiveSheet.Paste
        Sheets("Feuil1").Select
        Range("A1").Select
    End Sub
    Remarque : si la dernière ligne de la plage à copier est également la dernière ligne de données de votre feuille, vous pouvez remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dl = 12 (ou le nombre que vous auriez indiqué)
     
    par
     
    dl = Range("A65536").End(xlUp).Row
    cela vous peermet de ne pas avoir à vous préoccuper du N° de dernière ligne, il est trouvé automatiquement.

    Amicalement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Liaison entre feuilles Excel
    Par lytog dans le forum Excel
    Réponses: 1
    Dernier message: 27/05/2015, 11h27
  2. problème de liaisons entre fichiers excel
    Par grrimag dans le forum Excel
    Réponses: 3
    Dernier message: 03/06/2008, 13h40
  3. Problème de liaison entre Word/excel et MOSS
    Par Faro dans le forum SharePoint
    Réponses: 2
    Dernier message: 02/01/2008, 18h19
  4. [VB-E/A/.net] Liaison entre Access, Excel
    Par Speranza dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/05/2006, 13h35
  5. lien entre feuille Excel
    Par corwin44 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/01/2006, 11h28

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