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 :

creer des liens entre les feuilles avec un bouton


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Points : 391
    Points
    391
    Par défaut creer des liens entre les feuilles avec un bouton
    Bonjour,

    j ai un bouton : lorsque je clic dessus j ajoute une feuille et en meme temps je mets a jours une ligne d un tableau : de cette facon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ActiveSheet.Cells(Rows.Count, "V").End(xlUp).Offset(1, 0).FormulaLocal = "=" & NewSh.Name & "!" & NewSh.Cells(6, "B").Address
        ActiveSheet.Cells(Rows.Count, "W").End(xlUp).Offset(1, 0).FormulaLocal = "=" & NewSh.Name & "!" & NewSh.Cells(4, "Z").Address
        ActiveSheet.Cells(Rows.Count, "X").End(xlUp).Offset(1, 0).FormulaLocal = "=" & NewSh.Name & "!" & NewSh.Cells(266, "E").Address
        ActiveSheet.Cells(Rows.Count, "Y").End(xlUp).Offset(1, 0).FormulaLocal = "=" & NewSh.Name & "!" & NewSh.Cells(266, "P").Address
        ActiveSheet.Cells(Rows.Count, "Z").End(xlUp).Offset(1, 0).FormulaLocal = "=" & NewSh.Name & "!" & NewSh.Cells(266, "W").Address

    et j aimerai mettre a jour la ligne juste au dessus donc j ecrirai rows.count-1 dans Cells

    mais je ne sais pas comment on ecrit : feuille juste avant.name

    est ce que c est sheets.count -1.name ?

    merci tom
    tom

    "Barbar : The rest of the warrior"

    Into the wild....

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par tomy7 Voir le message
    j aimerai mettre a jour la ligne juste au dessus donc j ecrirai rows.count-1 dans Cells
    Rows.Count -1...tu vas aller écrire dans la ligne 64534 ! Mettre à jour la ligne juste au-dessus de quoi ?


    Citation Envoyé par tomy7 Voir le message
    mais je ne sais pas comment on ecrit : feuille juste avant.name
    est ce que c est sheets.count -1.name ?
    feuille juste avant quoi ?
    Si c'est l'avant dernière feuille tu peux écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(Sheets.Count -1)
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  3. #3
    Membre averti Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Points : 391
    Points
    391
    Par défaut
    Rows.Count -1...tu vas aller écrire dans la ligne 64534 ! Mettre à jour la ligne juste au-dessus de quoi ?
    je voulais dire ActiveSheet.Cells(Rows.Count-1, "W").End(xlUp).Offset(1, 0).FormulaLocal = .....

    j ai trouve tout a l heure le sheets(sheet.count)-1 mais il plante quand il n y a qu une feuille.
    donc je vais gerer ca avec une select case true
    case sheet.count = 1

    case sheet.count > 1
    end select

    tu as une autre idee?
    tom

    "Barbar : The rest of the warrior"

    Into the wild....

  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
    Un select case est un peu lourd pour faire ça, non ? Pourquoi pas un simple test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If sheets.count > 1 then
         ........
       else
         .......
    Endif
    Mais bon...


    PS - Tu mets "j ai trouve tout a l heure le sheets(sheet.count)-1"
    Faut un s à sheets.count... mais je suppose que tu nous l'as mis en abrégé...

  5. #5
    Membre averti Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Points : 391
    Points
    391
    Par défaut
    en effet j ai abrege un peu la chose ...

    ok je ne savais pas ce qui etait le plus lour entre

    select case true et If then / else / end if


    merci ouskel Nor
    tom

    "Barbar : The rest of the warrior"

    Into the wild....

  6. #6
    Membre averti Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Points : 391
    Points
    391
    Par défaut
    nouveau souci: ( j essaye de le comprendre en pas a pas mais j ai du mal)
    je n ai qu une feuille Main
    lorsque je seclectionne dans mon forms le nom de ma nouvelle feuille je clic dans mon Forms sur un bouton puis une autre feuille s ajoute qui est une copie de Main.

    mais mon outils renomme Main au lieu de renomme Main (2), Pourquoi???
    en vert les lignes concernees

    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
    58
    59
    Private Sub CommandButton2_Click()
        Dim NewSh As Worksheet
        Dim LastSh As Worksheet
        Dim Line As Long
        Set NewSh = ActiveWorkbook.Worksheets(Sheets.Count)
    
        
        If Sheets.Count > 1 Then
            Set LastSh = ActiveWorkbook.Worksheets(Sheets.Count - 1)
            LastSh.Copy After:=ActiveWorkbook.Sheets(Sheets.Count)
        Else
            Set LastSh = ActiveWorkbook.Worksheets("Main")
            ActiveSheet.Copy After:=ActiveWorkbook.Sheets(Sheets.Count)
        End If
    NewSh.Select   
     Select Case True
        Case ComboBox1.Value = "EAC"
            NewSh.Name = "EAC" & Sheets.Count - 1
            NewSh.Range("Z4").Value = "EAC"
        Case ComboBox1.Value = "AC"
            NewSh.Name = "AC" & Sheets.Count - 1
            NewSh.Range("Z4").Value = "AC"
        End Select
        NewSh.Select
    
        On Error Resume Next
        Range("G12:N263").Cells.SpecialCells(xlCellTypeConstants).ClearContents
        Range("X9:AC10").Cells.SpecialCells(xlCellTypeConstants).ClearContents
        Range("R12:R263").Cells.SpecialCells(xlCellTypeConstants).ClearContents
        Range("T12:T263").Cells.SpecialCells(xlCellTypeConstants).ClearContents
        On Error GoTo 0
    
        Line = ActiveSheet.Cells(Rows.Count, "V").End(xlUp).Row + 1
        ActiveSheet.Rows(Line).Insert xlShiftDown
            
            ActiveSheet.Cells(Rows.Count - 1, "V").End(xlUp).Offset(1, 0).FormulaLocal = "=" & LastSh.Name & "!" & LastSh.Cells(6, "B").Address
            ActiveSheet.Cells(Rows.Count - 1, "W").End(xlUp).Offset(1, 0).FormulaLocal = "=" & LastSh.Name & "!" & LastSh.Cells(4, "Z").Address
            ActiveSheet.Cells(Rows.Count - 1, "X").End(xlUp).Offset(1, 0).FormulaLocal = "=" & LastSh.Name & "!" & LastSh.Cells(266, "E").Address
            ActiveSheet.Cells(Rows.Count - 1, "Y").End(xlUp).Offset(1, 0).FormulaLocal = "=" & LastSh.Name & "!" & LastSh.Cells(266, "P").Address
            ActiveSheet.Cells(Rows.Count - 1, "Z").End(xlUp).Offset(1, 0).FormulaLocal = "=" & LastSh.Name & "!" & LastSh.Cells(266, "W").Address
            ActiveSheet.Cells(Rows.Count, "V").End(xlUp).Offset(1, 0).FormulaLocal = "=" & NewSh.Name & "!" & NewSh.Cells(6, "B").Address
            ActiveSheet.Cells(Rows.Count, "W").End(xlUp).Offset(1, 0).FormulaLocal = "=" & NewSh.Name & "!" & NewSh.Cells(4, "Z").Address
            ActiveSheet.Cells(Rows.Count, "X").End(xlUp).Offset(1, 0).FormulaLocal = "=" & NewSh.Name & "!" & NewSh.Cells(266, "E").Address
            ActiveSheet.Cells(Rows.Count, "Y").End(xlUp).Offset(1, 0).FormulaLocal = "=" & NewSh.Name & "!" & NewSh.Cells(266, "P").Address
            ActiveSheet.Cells(Rows.Count, "Z").End(xlUp).Offset(1, 0).FormulaLocal = "=" & NewSh.Name & "!" & NewSh.Cells(266, "W").Address
            If ActiveSheet.Range("W" & Line).Value = "AC" Then
                ActiveSheet.Cells(Rows.Count, "AA").End(xlUp).Offset(1, 0).Formula = "=AA" & Line - 1 & "+X" & Line
                ActiveSheet.Cells(Rows.Count, "AB").End(xlUp).Offset(1, 0).FormulaLocal = "=AB" & Line - 1 & "+Y" & Line
            End If
            If ActiveSheet.Range("W" & Line).Value = "EAC" Then
                ActiveSheet.Cells(Rows.Count, "AA").End(xlUp).Offset(1, 0).FormulaLocal = "=AA" & Line - 1
                ActiveSheet.Cells(Rows.Count, "AB").End(xlUp).Offset(1, 0).FormulaLocal = "=AB" & Line - 1 & "+Y" & Line
            End If
            ActiveSheet.Cells(Rows.Count, "AC").End(xlUp).Offset(1, 0).Select
            Selection.Style = "percent"
            ActiveSheet.Cells(Rows.Count, "AC").End(xlUp).Offset(1, 0).FormulaLocal = "=1-(AB" & Line & "/AA" & Line & ")"
    Set NewSh = Nothing
    Set LastSh = Nothing
    End Sub
    tom

    "Barbar : The rest of the warrior"

    Into the wild....

  7. #7
    Membre averti Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Points : 391
    Points
    391
    Par défaut
    voici la solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        If Sheets.Count > 1 Then
            Set LastSh = ActiveWorkbook.Worksheets(Sheets.Count - 1)
            LastSh.Copy After:=ActiveWorkbook.Sheets(Sheets.Count)
        Else
            Set LastSh = ActiveWorkbook.Worksheets("Main")
            ActiveSheet.Copy After:=ActiveWorkbook.Sheets(Sheets.Count)
            Set NewSh = ActiveWorkbook.Worksheets(Sheets.Count)
     
    end if
    tom

    "Barbar : The rest of the warrior"

    Into the wild....

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

Discussions similaires

  1. [AC-2007] Faire des liens entre les champs d'une table.
    Par maxime42 dans le forum Access
    Réponses: 3
    Dernier message: 26/04/2011, 22h23
  2. Réponses: 3
    Dernier message: 02/07/2010, 15h50
  3. Réponses: 2
    Dernier message: 21/02/2007, 12h54
  4. [VBA-E] liens entre les userform et reduction des lignes de programme
    Par jamelie dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/05/2006, 12h43

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