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 :

Faire référence a une autre page


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2018
    Messages : 22
    Par défaut Faire référence a une autre page
    Bonjour tout le monde,

    Voila j'explique mon petite problème.
    J'aimerais par le biais d'un code assigné à une cellule la valeur d'une autre cellule sur une autre feuille.
    Par exemple : A1 sur la feuille active, égale la valeur d'A1 d'une seconde feuille.
    Pour le moment j'ai ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "='NewTitre'!RC"
    Le problème c'est ce petit "RC" Si ActiveCelle = A1 alors RC = A1 jusque la ok
    Mais Si ActiveCelle = B1 alors RC = B1 mais je veux que se soie A1. Je pourrais faire RC[-1] mais encore une fois cela ne fonctionnerait que en B1 alors que moi j'aimerais que cela fonctionne pour tous

    Quelqu'un aurait une idée?

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,,

    Quelques petites explications:
    R = Row = Ligne
    C = Column = Colonne

    R1C1 (valeurs absolues ou figées) = Ligne 1 et colonne 1 = A1 (et se sera toujours A1), écriture équivalente à $A$1 en excel
    RC[1] (Valeurs relatives, en fonction de l'emplacement de la cellule sélectionnée) si la cellule sélectionnée est A1, alors R=même ligne, donc 1. C[1] = colonne +1 donc B. Au final RC[1] = B1
    R[-2]C[-2] (Valeurs relatives, en fonction de l'emplacement de la cellule sélectionnée) si la cellule sélectionnée est D6, R= ligne -2, donc 4. C[-2] = colonne -2 donc B. Au final R[-2]C[-2] = B4

    Ceci devrait vous aider à résoudre votre problème.

    Cdlt

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2018
    Messages : 22
    Par défaut
    Merci beaucoup aurait tu une solution pour pouvoir étirer la formule sur la colonne ?

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je n'ai pas bien compris ton explication.

    Citation Envoyé par kelerbee Voir le message
    J'aimerais par le biais d'un code assigné à une cellule la valeur d'une autre cellule sur une autre feuille.
    Comment est déterminée l'adresse de cette "autre cellule" ?
    Dans quel contexte places-tu ta macro ? Une fonction personnalisée ? Une macro déclenchée à la main ? Une macro évènementielle ?

    Mais Si ActiveCelle = B1 alors RC = B1 mais je veux que se soie A1. Je pourrais faire RC[-1] mais encore une fois cela ne fonctionnerait que en B1 alors que moi j'aimerais que cela fonctionne pour tous
    Ca signifie qu'en B1 de ta feuille cible tu veux avoir la valeur de A1 de ta feuille source ?

  5. #5
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2018
    Messages : 22
    Par défaut
    En faite j'ai une feuille général avec une liste de nom en colonne A j'ai aussi un bouton qui crée des catégorie En créant une nouvelle feuille avec le titre de la catégorie.
    j'aimerais que sur la feuille général soie repris toute les catégorie avec en dessous du titre face au nom de la personne les points qu'il aurait obtenu dans la catégorie.

    Si le nom ce trouve en A2 sur la feuille général il se trouve également en A2 sur la feuille de la catégorie donc en B2 de la feuille général j'aimerais avoir la moyen qu'il a obtenue pour la catégorie 1 en C2 la moyen pour la CAT3 et si je crée une nouvelle CAT le titre ce mettra en D1 et la formule en D2 mais j'aimerais que cette formule aille pour tout les noms.

    Je sais pas si j'ai été claire?

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par kelerbee Voir le message
    Je sais pas si j'ai été claire?
    En ce qui me concerne, pas du tout.
    Il faudrait au moins que tu mettes des copies d'écran de tes feuilles source et destination pour comprendre comment sont organisées tes données.

  7. #7
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2018
    Messages : 22
    Par défaut
    Excuse moi je vais essayer d'etre plus claire

    voici la page général :

    Nom : 1.png
Affichages : 156
Taille : 51,7 Ko

    Ici si j'actionne le bouton catégorie il m'ouvre un userforme pour je peux lui donné le titre de la nouvelle catégorie

    Nom : 2.png
Affichages : 151
Taille : 54,5 Ko

    Nom : 3.png
Affichages : 151
Taille : 52,4 Ko

    Il m'ajoute un bouton au dessu de la premier colonne vide avec le nom de la catégorie si j'actionne ce bouton il m'ouvre la page de la catégorie ou je vais pouvoir reprendre tout les test.

    Nom : 4.png
Affichages : 154
Taille : 54,8 Ko

    J'aimerais que ce bouton mette aussi dans la page général, sous la colonne correspondante à la catégorie la formule pouvant faire la moyenne de cette catégorie.

  8. #8
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2018
    Messages : 22
    Par défaut
    Personne ne sais m'aider ? Je n'arrive pas à étendre cette formule j'ai trouver comment le faire quand on demare d'une cellule connu mais le problème c'est que la colonne n'est jamais fixe

  9. #9
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonsoir,

    Personne ne sais m'aider ?, Mais si, tout le monde veut vous aider, mais avouez que pour comprendre ce que vous voulez il faut un décodeur. Vous avez mis 4 belles images de feuilles avec une liste de noms, mais ou sont les valeurs à récupérer, où doivent-elles se reporter? Pour nous aidez à comprendre, mettez plutôt des valeurs dans la feuille "conjugaison", puis dans l'autre feuille "Général", montrez-nous le résultat attendu, à partir de là, on pourra vous fournir une réponse. Pensez que nous ne sommes pas dans votre tête et que nous n'avons pas forcément la même logique que vous pour comprendre les choses.

    Un problème bien exposé est à moitié résolu.

    Juste une petite question: Avez-vous bien compris mes explications du post 2?

    Cdlt

  10. #10
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Personne ne sais m'aider ?
    Personnellement, quand la troisième fois je n'ai pas compris, je n'insiste pas. Certains considèrent ça comme du harcèlement agressif et commence à partir dans des attaques tout à fait déplaisantes.

    Citation Envoyé par kelerbee Voir le message
    Ici si j'actionne le bouton catégorie il m'ouvre un userforme pour je peux lui donné le titre de la nouvelle catégorie
    Pourrais-tu montrer ton code ?

    Si tu as juste un mot à mettre, il serait plus simple d'utiliser une Inputbox qu'un Userform.
    https://docs.microsoft.com/fr-fr/off...utbox-function

    Il m'ajoute un bouton au dessu de la premier colonne vide avec le nom de la catégorie si j'actionne ce bouton il m'ouvre la page de la catégorie ou je vais pouvoir reprendre tout les test.
    Comme je le disais, je n'ai pas vraiment compris ce que tu souhaites faire mais j'ai l'impression que créer un lien hypertexte serait plus simple qu'un bouton.
    https://docs.microsoft.com/fr-FR/off...cel.hyperlinks
    https://docs.microsoft.com/fr-FR/off...xcel.hyperlink

    J'aimerais que ce bouton mette aussi dans la page général, sous la colonne correspondante à la catégorie la formule pouvant faire la moyenne de cette catégorie.
    Visiblement, dans ton process tu utilises plusieurs onglets mais tu n'y fais jamais référence dans tes explications.
    On ne sait pas non plus comment se construit le nom de l'onglet de la catégorie.

  11. #11
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    Salut

    Un principe facile à comprendre : "Aide nous à aider !"*.
    En navigant à vue, avec ton problème qui semble venir de l'analyse du RC dans la formule passée au VBA, une autre direction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Macro()
      Dim C As Range
      For Each C In [Plage]                                'Plage : nom de la zone parcourue
        If C = Feuil1.[$A$1] Then Action 1 Else Action 2   'Feuil1 : feuille source, A1 : cellule source (avec des $)
      Next
    End Sub
    *tes images ne me (nous) permettent pas d'analyser la situation dans son ensemble. Une longue liste de codes me serait moins abordable qu'un petit fichier significatif avec le minimum d'informations impliquant la demande. Beaucoup trouveront cette demande malvenue mais je pense que c'est une solution qui peut permettre de régler le problème plus rapidement.

  12. #12
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2018
    Messages : 22
    Par défaut
    Citation Envoyé par ARTURO83 Voir le message
    Juste une petite question: Avez-vous bien compris mes explications du post 2?
    Oui merci beaucoup cela ma vraiment aidée mais le problème se situais quand je faisais un AutoFill je ne pouvais pas utilisé RC tel quel mais j'ai trouver une solution je vous met mon code ici en espérant qu'il soie plus parlant que toute mes explication

    Mon problème se situais sur la ligne 83 mais j'ai finalement pu trouver une solution en farfouillant dans la doc Merci quand de m'avoir accordé votre temps pour essayer de me comprendre
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    Private Sub CommandButton1_Click()
     
    Application.ScreenUpdating = False
    'enregistre le titre de la page en cours
    nom_feuille = ActiveSheet.Name
    Dim B1 As String
    Dim B2 As String
    'definit B1 comme le texte du bouton 1
        ActiveSheet.Shapes.Range(Array("Button 1")).Select
        B1 = Selection.Characters.Text
    'definit B2 avec le titre actuel
        Range("B2:D2").Select
        B2 = ActiveCell.FormulaR1C1
    'defini le titre de la categorie
    Dim vTitre As String
        vTitre = TextBox1
    'copie la page model
    Worksheets("Model.3").Copy After:=Worksheets("Model.3")
    'nomme la nouvelle page model avec le titre de la catégorie et le titre dans le quel elle est crée
    Worksheets("Model.3 (2)").Name = vTitre & "          " & B2
    Dim newtitre As String
        newtitre = vTitre & "          " & B2
    'ajoute un bouton et le nomme "B1"
    Sheets(vTitre & "          " & B2).Buttons.Add(0, 0.75, 60, 33).Select
    Selection.Characters.Text = B1
        With Selection.Font
            .Name = "Calibri"
            .FontStyle = "Gras"
            .Size = 14
            .Strikethrough = False
            .Superscript = False
           .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .Color = -16777216
        End With
    Selection.OnAction = "Bouton3_" & B1
    'ajoute B2 etle définit
    Sheets(vTitre & "          " & B2).Buttons.Add(60, 0, 60, 15.75).Select
    Selection.Characters.Text = B2
         With Selection.Font
            .Name = "Calibri"
            .FontStyle = "Gras"
            .Size = 11
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .Color = -16777216
        End With
    Selection.OnAction = "Bouton3_" & B2
    'définit titre de page
    Range("B2:D2").Select
        Selection.Font.Bold = True
        With Selection.Font
            .Name = "Calibri"
            .Size = 14
        End With
         With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        Selection.Merge
        ActiveCell.FormulaR1C1 = vTitre
     
    'cherche la colone vide pour lui ajouter le bouton de cat
    Worksheets(nom_feuille).Activate
    Dim Col As Integer
    Col = Rows(5).Find("*", , , , xlByRows, xlPrevious).Column + 1
    Cells(5, Col) = "ok"
    Cells(6, Col).Select
    ActiveCell.FormulaR1C1 = "='" & newtitre & "'!RC2"
    Selection.AutoFill Destination:=Range(Cells(6, Col), Cells(19, Col)), Type:=xlFillDefault
    Col = (Col - 1) * 60
    ActiveSheet.Buttons.Add(Col, 64.5, 60, 16.5).Select
    Selection.Characters.Text = vTitre & "          " & B2
    Selection.OnAction = "macro_test"
    UserForm1.Hide
    End Sub
    Si vous pouviez me donné quelque conseil pour le code si vous voyer une meilleur façon de travailler je suis preneur c'est mon premier vrai code je sais que sa dois vous sembler très brouillon mais bon j'en suis quand même un peu fier

  13. #13
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Quelques conseils parmi d'autres
    Toutes les variables doivent être déclarées en début de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub CommandButton1_Click()
        '*********** Déclaration des variables ****************************
        Dim B1 As String
        Dim B2 As String
        Dim vTitre As String
        Dim newtitre As String
        Dim Col As Integer
     
        Application.ScreenUpdating = False
    Eviter au maximum la commande Select:
    des lignes du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       Range("B2").Select
        ActiveCell.FormulaR1C1 = "=RC[1]+RC[2]"
        Selection.AutoFill Destination:=Range("B2:B14"), Type:=xlFillDefault
    peuvent s'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Range("B2:B14").FormulaR1C1 = "=RC[1]+RC[2]"
    Voilà pour quelques infos, je n'ai pas pris le temps de tout regarder.

    Cdlt

  14. #14
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2018
    Messages : 22
    Par défaut
    Citation Envoyé par ARTURO83 Voir le message
    Quelques conseils parmi d'autres
    Merci Beaucoup

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/09/2016, 20h54
  2. Réponses: 17
    Dernier message: 15/06/2015, 15h48
  3. [XL-2003] Fixer une ligne lorsqu'elle fait référence à une autre page
    Par merlinus3000 dans le forum Excel
    Réponses: 1
    Dernier message: 22/03/2012, 19h45
  4. Réponses: 2
    Dernier message: 22/04/2010, 11h13
  5. [Spip] Faire pointer une rubrique vers une autre page
    Par clgmoliere dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 15/12/2008, 12h04

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