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 WithSi quelqu'un à une astuce ... si vous voulez le fichier demandez moi
Merci a tous
Chris
Bonjour
remplace
ActiveSheets.Name = nrapexpar
ActiveSheet.Name = nrapexAutre chose aussi à modifier
Dim rep, classeurpath, classeurphoto, classeurplan As Stringpar
Dim rep as string, classeurpath as string, classeurphoto as string, classeurplan As StringCrdlt
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 WithLa 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 WithVoilà...
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