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 :

formule dans une cellule, référence à une feuille


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 51
    Par défaut formule dans une cellule, référence à une feuille
    Bonjour, Je dois mettre une formule dans une cellule qui fait référence à une feuille.

    J'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTERREUR(Feuil2!D8/Feuil1!D8);"n.d.";(D8-Feuil2!D8)/Feuil2!D8)
    Mais bon mon problème c'est que je change constamment mes noms d'onglet

    Donc rendu à la deuxième manipulation tout est plus bon.

    Pour faire une histoire courte, j'extrait des donnés d'un fichier externe et je les redisposes selon mes goûts dans mon fichier. voila pourquoi je les renomme toujours...

    j'ai pensé mettre un truc du genre thisworkbook.sheets(1).name, mais bon c'est pas bon

    Merci
    Marie

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonsoir

    Pas sûr d'avoir compris...

    Si, dans une formule Excel, tu utilises un nom de feuille puis que tu renommes la feuille, Excel va adapter le nom dans la formule...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2007
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2007
    Messages : 272
    Par défaut
    Autant que je sache Excel translate automatiquement les formules qui intégrent un nom de feuille dans une formule.
    Ou bien j'ai pas compris ton problème.

    Bonne soirée.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 51
    Par défaut
    Bien j.avoue que règle générale tout se passe bien, mais dans ce cas présent pour une raison que j'ignore il mets REF# juste après le nom de l'onglet et il efface le numéro de ma cellule?

    ESTERREUR('952008'!#REF!/'952008'!#REF!)

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Es-tu sûr de ne pas avoir supprimé la cellule? (Attention, supprimer <> Effacer tout).

    Le problème se situe dans la référence de la cellule, car c'est là que se trouve le #REF!. Si le problème venait de la feuille, tu aurais #REF!D8 et pas '952008'!#REF!
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 51
    Par défaut
    ben je suis pas mal sur de n'avoir rien effacer, car j'y ai pas touché.

    C'est juste qu'au départ j'avais un autre problème qui lui a été réglé, mais je pense que ca là occasionner celui-ci.

    Ma macro colle les valeurs de ma page 1 sur page 2. puis la formule bien elle fait référence à ces 2 pages.

    Donc, je sais pas si cela va te donner plus d'idée de la source du problème.

    Merci d'avance

    Marie

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Il serait intéressant de voir le code vba...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 51
    Par défaut
    ok bien je le mets ici

    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    pplication.ScreenUpdating = False ' pour cacher le processus
     
       'pour savoir le nombre de feuille
        ThisWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
        nbfeuille = Worksheets.Count
     
        'Copier les données de la feuille 2 vers la dernière feuille
        ThisWorkbook.Sheets(2).Cells.Copy
        ThisWorkbook.Sheets(nbfeuille).Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues
        Selection.PasteSpecial Paste:=xlPasteFormats
     
        ThisWorkbook.Sheets(2).Range("A1:Z100").Delete
     
        'donne un nom à mon onglet collé
        nomfeuille = Mid(ThisWorkbook.Sheets(2).Name, 1, 3)
        ThisWorkbook.Sheets(nbfeuille).Name = nomfeuille & -2008
     
        ' copier les données de la feuille 1 vers la feuille 2
        ThisWorkbook.Sheets(1).Cells.Copy
        ThisWorkbook.Sheets(2).Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues
        Selection.PasteSpecial Paste:=xlPasteFormats
     
        'donne un nom à mon onglet collé
        nomfeuille = Mid(ThisWorkbook.Sheets(1).Name, 1, 3)
        ThisWorkbook.Sheets(2).Name = nomfeuille & 2008
     
        'Initialisations
        strFPath = ""
        Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
     
        'Boîte de selection du fichier source
        With fDialog
            .AllowMultiSelect = False 'Limite la selection à un seul fichier
            .Filters.Add "Fichier Excel", "*.xls", 1
            .Title = "Choisir un rapport"
            .InitialView = msoFileDialogViewDetails
            .Show
            For Each varTemp In .SelectedItems 'Boucle au cas ou (sécurité)
                strFPath = varTemp 'Assigne le chemin complet du ficher selectionné
            Next varTemp
        End With
     
        'Ouvre le fichier source pour traitement futur
        If strFPath <> "" Then
     
            Set xlBook = Workbooks.Open(strFPath)
     
            EchangerValeur xlBook ' Mets les données à jour
     
            Application.Calculate ' refresh de nos valeurs
     
     
        End If
     
     
    Exit_GetSource:
        'Libération
        Set fDialog = Nothing
        Set varTemp = Nothing
        strFPath = ""
     
        'Ferme la feuille qui est ouverte dans la variable s'il ya lieu
        If Not (xlBook Is Nothing) Then xlBook.Close
        Set xlBook = Nothing
     
        Application.ScreenUpdating = True ' permets de voir le processus durant l'exécution
     
        Exit Sub
     
    Err_GetSource:
        MsgBox "Une erreur est survenue dans la routine GetSource" & vbCrLf & vbCrLf & "Erreur technique NO : " & Err.Number & " - " & Err.Description & vbCrLf & vbCrLf & "Le traitement a du être interrompu!"
        Resume 0 'Exit_GetSource
     
     
    End Sub
     
    Sub EchangerValeur(ByRef wbCache As Workbook)
        Dim i As Integer ' Détermine la position de la ligne dans le fichier actif
        Dim j As Integer ' Détermine la position de la colonne dans le fichier actif
        Dim x As Integer ' Détermine la position de la ligne dans le fichier source
        Dim y As Integer ' Détermine la position de la colonne dans le fichier source
        Dim z As Integer ' Détermine la position des types du fichier source
        Dim k As Integer ' Détermine la position afin de coller les formules dans le tableau suivant
     
        i = 8
        j = 4
     
        For k = 6 To 40 Step 34
     
            For z = 0 To 6 Step 3
                For x = k + z To 20 + k + z Step 10
                    For y = 4 To 11
     
                        ThisWorkbook.Sheets(1).Range(ThisWorkbook.Sheets(1).Cells(i, j), ThisWorkbook.Sheets(1).Cells(i + 2, j)).Value = wbCache.ActiveSheet.Range(wbCache.ActiveSheet.Cells(x, y), wbCache.ActiveSheet.Cells(x + 2, y)).Value
                        j = j + 2
     
                    Next y
                    j = 4
                    i = i + 3
     
     
                 Next x
                 i = i + 1
            Next z
            i = i + 8
     
     
       Next k
     
     
    ThisWorkbook.Sheets(1).Cells(3, 1) = "Inscrire votre date ici"
     
    End Sub
    En espérant qu'il soit clair

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonsoir

    Tu as cette ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Sheets(2).Range("A1:Z100").Delete
    qui supprime les cellules. Or, la cellule D8 est incluse dans la plage que tu supprimes... => problème de #REF!...

    Si tu ne doit pas supprimer, mais que tu veux effacer, utilise plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Sheets(2).Range("A1:Z100").Clear
    Ok?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 51
    Par défaut
    J'en reviens pas. J'étais sur d'avoir rien fait de mal...

    Merci beaucoup

    Marie

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 12h17
  2. Réponses: 2
    Dernier message: 23/10/2014, 00h21
  3. Réponses: 2
    Dernier message: 25/11/2010, 17h08
  4. [XL-2007] Formule dans le nom d'une cellule
    Par alainpinpin dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/04/2009, 11h47
  5. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 12h05

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