Donner le nom d'une cellule à une feuille d'un autre fichier

Bonjour a tous, le forum

Donc voilà, je me trouve devant un soucis VBA, je m'explique, dans mon poste précédent "Retourner les valeur de cellule dans les combo" gmb m'à fortement contribué au développement d'une appli pour des inspections d'ancrages.

Maintenant que cette dernière est faite, je suis en train de mettre en place la création de rapports, voici comment cela fonctionne :

Je me suis créer un ruban perso nommé "OUTILS INSPECTION" contenant un bouton créer fiche, lorsque je clique sur ce dernier, alors il me prend chaque ligne (a partir de la ligne 4) pour me créer les fiches. J'ai commencer le code de cette manière (pour le moment il n'y à que le nom de feuille qui doivent prendre la valeur contenu dans la colonne "J"), mais cela ne fonctionne pas, il m'ouvre bien le classeur mais il me dis objet requis. Je pense que je déclare mal ma variable qui est de cette forme : 5AAA112ER

Voici le code en question :

'Callback for nav_s onAction
Sub Creer_rapports(control As IRibbonControl)

Dim bdd As Workbook, rapex As Workbook
Dim rep, classeurpath, classeurphoto, classeurplan As String
Dim nrapex As Integer
Dim ligne_fin As String

    rep = Environ("USERPROFILE") & "\"
    classeurpath = rep & "Documents\InspectionAncrages\Rapports_expertise\rap_exp_chevilles.xlsm"
    classeurphoto = rep & "Documents\InspectionAncrages\Photos"
    classeurplan = rep & " Documents\InspectionAncrages\Plans"
    ligne_fin = Cells.Find("*", Range("J1"), , , xlByRows, xlPrevious).Row
Set bdd = ThisWorkbook
Set rapex = Workbooks.Open(classeurpath)

        With rapex.Worksheets("RE_Type_Cheville")
            For i = 4 To ligne_fin
                nrapex = Var(bdd.Worksheets("BDD").Range("J" & i))
                rapex.Worksheets("RE_Type_Cheville").Copy Before:=rapex.Worksheets("RE_Type_Cheville")
                ActiveSheets.Name = nrapex
            Next i
        End With

Si quelqu'un à une astuce ... si vous voulez le fichier demandez moi

Merci a tous

Chris

Bonjour

remplace

ActiveSheets.Name = nrapex

par

ActiveSheet.Name = nrapex

Autre chose aussi à modifier

Dim rep, classeurpath, classeurphoto, classeurplan As String

par

Dim rep as string, classeurpath as string, classeurphoto as string, classeurplan As String

Crdlt

Bonjour Dan,

Merci pour les corrections, mais maintenant j'ai une incompatibilité de type

'Callback for nav_s onAction
Sub Creer_rapports(control As IRibbonControl)

Dim bdd As Workbook, rapex As Workbook
Dim rep As String, classeurpath As String, classeurphoto As String, classeurplan As String
Dim nrapex As Integer
Dim ligne_fin As String

    rep = Environ("USERPROFILE") & "\"
    classeurpath = rep & "Documents\InspectionAncrages\Rapports_expertise\rap_exp_chevilles.xlsm"
    classeurphoto = rep & "Documents\InspectionAncrages\Photos"
    classeurplan = rep & " Documents\InspectionAncrages\Plans"
    ligne_fin = Cells.Find("*", Range("J1"), , , xlByRows, xlPrevious).Row
Set bdd = ThisWorkbook
Set rapex = Workbooks.Open(classeurpath)

        With rapex.Worksheets("RE_Type_Cheville")
            For i = 4 To ligne_fin
                nrapex = bdd.Worksheets("BDD").Range("J" & i)
                rapex.Worksheets("RE_Type_Cheville").Copy Before:=rapex.Worksheets("RE_Type_Cheville")
                ActiveSheet.Name = nrapex
            Next i
        End With

La ligne qui est pointée est celle-ci :

nrapex = bdd.Worksheets("BDD").Range("J" & i)

Le code erreur est 13

Merci pour ton aide

Chris

re,

Je pense --> nrapex as range au lieu de nrapex as integer

crdlt

re,

Bon ça ne fonctionne pas en passant de integer à range, est il possible de dire à vba que quelque soit le format de cellule la valeur contenu soit le nom de la feuille ?

Merci

Chris

re,

Du coup je viens de trouver, ça fonctionne mais est ce vraiment CETTE solution... euuuuh ...

'Callback for nav_s onAction
Sub Creer_rapports(control As IRibbonControl)

Dim bdd As Workbook, rapex As Workbook
Dim rep As String, classeurpath As String, classeurphoto As String, classeurplan As String
Dim nrapex As String
Dim ligne_fin As String
Dim repmat As String, site As String, theme As String, oin As String, fiche As String, typeanc As String, loc As String
Dim nbreel As String, plan As String, diametrereel As String, tr As String, syst As String, nmat As String, bigramme As String, contcom As String
Dim log As String, vol As String, ddd As String, typeouti As String, numoutil As String, limval As String

    rep = Environ("USERPROFILE") & "\"
    classeurpath = rep & "Documents\InspectionAncrages\Rapports_expertise\rap_exp_chevilles.xlsm"
    classeurphoto = rep & "Documents\InspectionAncrages\Photos"
    classeurplan = rep & " Documents\InspectionAncrages\Plans"
    ligne_fin = Cells.Find("*", Range("J1"), , , xlByRows, xlPrevious).Row

Set bdd = ThisWorkbook
Set rapex = Workbooks.Open(classeurpath)

        With rapex.Worksheets("RE_Type_Cheville")
            For i = 4 To ligne_fin
                nrapex = CStr(bdd.Worksheets("BDD").Range("J" & i)) 'il fallait rajouter CStr() devant et déclarer la variable en String
                rapex.Worksheets("RE_Type_Cheville").Copy Before:=rapex.Worksheets("RE_Type_Cheville")
                ActiveSheet.Name = nrapex

    ' Renseignement sur l'inspection

        site = bdd.Worksheets("BDD").Range("A" & i).Value
        theme = bdd.Worksheets("BDD").Range("B" & i).Value
        oin = bdd.Worksheets("BDD").Range("C" & i).Value
        fiche = bdd.Worksheets("BDD").Range("J" & i).Value
        repmat = bdd.Worksheets("BDD").Range("D" & i).Value
        typeanc = bdd.Worksheets("BDD").Range("Q" & i).Value
        loc = bdd.Worksheets("BDD").Range("I" & i).Value
        nbreel = bdd.Worksheets("BDD").Range("S" & i).Value
        diametrereel = bdd.Worksheets("BDD").Range("T" & i).Value
        plan = bdd.Worksheets("BDD").Range("U" & i).Value
        tr = bdd.Worksheets("BDD").Range("E" & i).Value
        syst = bdd.Worksheets("BDD").Range("F" & i).Value
        nmat = bdd.Worksheets("BDD").Range("G" & i).Value
        bigramme = bdd.Worksheets("BDD").Range("H" & i).Value
        contcom = bdd.Worksheets("BDD").Range("R" & i).Value

    ' On écrit les valeurs dans le rapport

        Sheets(nrapex).Range("AE13") = site
        Sheets(nrapex).Range("A13") = oin
        Sheets(nrapex).Range("K13") = repmat
        Sheets(nrapex).Range("S14") = loc

                If bdd.Worksheets("BDD").Range("B" & i).Value = rapex.Worksheets("RE_Type_Cheville").Range("P" & i) Then
                rapex.Worksheets("RE_Type_Cheville").Range("V16").Value = "X"
                End If

            Next i
        End With

Voilà...

Bonne journée a tous

re

Pas facile sans voir le fichier.

Là, à vérifier mais si tu déclares nrapex as string au début de ton code, tu ne devrais pas utiliser Cstr plus bas

Si ok, n'oublie pas de cloturer le fil en cliquant sur le V vert à coté du bouton Editer

Crdlt

Salut Dan,

En effet ça fonctionne aussi, je classe donc en résolu,

Merci à toi

Chris

Rechercher des sujets similaires à "donner nom feuille fichier"