Probleme sur une macro Excel

niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015 - 23 févr. 2015 à 18:32
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 2 mars 2015 à 13:25
Bonjour à tous,


Je me retrouve face à un problème mystic... je n'arrive pas à le solutionner, le voici...

Je demande à une macro excel nommé Fvierge de, lorsque elle s'ouvre, me créée un dossier nommé "PDF-Fiche" et ensuite de me copier le lien en cellule AE1... cette macro fonctionne très bien sur mon PC, parcontre des que je le met au même endroit dans un autre pc elle plante, elle me créer bien le dossier en question mais ne m'écrit pas son chemin dans cette cellule AE1.
Voici le code :

Sub Wb_Open()
'If ThisWorkbook.Sheets("Fvierge").Range("AE1").Value = "" Then
creation_dossier
'End If
'prevoir desactivation du bouton pdf
End Sub

Private Sub creation_dossier()
Dim rep As String
Dim Mot As String
Dim Position As Integer
rep = Environ("USERPROFILE") & "\"
Mot = "Users"
Position = InStr(rep, Mot)
If Position = 0 Then
CreationRepertoire rep & "Mes documents\HagueInspection\Fiches", "PDF-Fiches"
ThisWorkbook.Sheets("Fvierge").Range("AE1").Value = rep & "Mes documents\HagueInspection\Fiches\PDF-Fiches\"
Else
CreationRepertoire rep & "Documents\HagueInspection\Fiches", "PDF-Fiches"
ThisWorkbook.Sheets("Fvierge").Range("AE1").Value = rep & "Documents\HagueInspection\Fiches\PDF-Fiches\"
End If
End Sub
Sub CreationRepertoire(DossierParent As String, NomRep As String)
Dim chemin As String
'Vérifie si le répertoire existe.
If Dir(DossierParent, vbDirectory + vbHidden) <> "" Then
'Vérifie que le dossier à créer n'existe pas déjà dans le répertoire
If Dir(DossierParent & "\" & NomRep, vbDirectory + vbHidden) = "" Then _
MkDir DossierParent & "\" & NomRep
End If
End Sub


Voici la ligne qui est pointée :
ThisWorkbook.Sheets("Fvierge").Range("AE1").Value = rep & "Documents\HagueInspection\Fiches\PDF-Fiches\"

Et le message d'erreur :

Erreur d'éxécution "32809"
Erreur définie par l'application ou par l'objet

J'avoue que cela fait un petit moment que je cherche l'erreur, vais vu que ça fonctionne à merveille chez moi.... je ne comprend pas

Merci our votre aide

12 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 23/02/2015 à 18:55
Bonjour,
La ligne de code dont tu dis qu'elle provoque une erreur ne peut en provoquer une que si le classeur actif à ce moment-là n'a pas de feuille nommée Fvierge.
Tu es seul à savoir pourquoi (en fonctions d'autres instructions exécutées ailleurs que dans cette ligne dans ton code, instructions d'ouverture d'un autre classeur).

PS : il est assez maladroit, par ailleurs, de nommer de la même manière une feuille et une macro ===>>
Je demande à une macro excel nommé Fvierge

Es-tu certain de ce qu'il ;s'agit d'une "macro" ? Où est-elle, cette "macro" ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
23 févr. 2015 à 18:56
Bonjour ucfoutu,

ça fait plaisir ;) ,

En faite, tous les code de ce fichier fonctionne uniquement pour lui-même, il est composé d'une seul feuille qui est nommée "Fvierge" et par conséquent active, elle fonctionne comme je l'ai précisé, sur mon pc (là ou j'ai développé l'application), mais dès que je la met sur un autre pc elle bug... c'est là que je ne comprend pas

merci
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
23 févr. 2015 à 18:59
oups... erreur de frappe pour cette remarque :
il est assez maladroit, par ailleurs, de nommer de la même manière une feuille et une macro

Une macro sur une feuille nommée "Fvierge"

désolé
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 févr. 2015 à 19:07
J'insiste sur ce que je t'ai dit plus haut.
Fais-en donc l'expérience ===>>>
Dim feuille As Worksheet, trouve As Boolean
For Each feuille In ThisWorkbook.Worksheets
MsgBox feuille.Name
If feuille.Name = "Fvierge" Then trouve = True
Next
If Not trouve Then MsgBox "ce classeur actif ne contient pas de feuille nommée Fvierge !"

code à mettre juste avant ta ligne dénoncée en erreur.
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
23 févr. 2015 à 19:45
Rebonsoir,

Il me retourne bien le nom de la feuille... qui est "Fvierge"
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
23 févr. 2015 à 19:46
Juste pour infirmation, ce fichier qui fonctionne sur mon pc, je le copie/colle sur un autre pc... et il ne marche plus...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 févr. 2015 à 19:48
Il est temps de le dire.
Quelle est ta version de Office (sur ta machine) et quelle est-elle sur l'autre machine ?
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
23 févr. 2015 à 19:51
les 2 machine sont en Excel 2013
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
23 févr. 2015 à 20:00
il est temps de le dire ?

"cette macro fonctionne très bien sur mon PC, parcontre des que je le met au même endroit dans un autre pc elle plante"

je l'ai fait :) dans mon premier poste
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 23/02/2015 à 20:57
je ne vois pas où, dans ton premier message du as dit " je le copie/colle sur un autre pc."
(Je t'aurais immédiatement demandé ce qu'(étaient les versions)
Bon ...
Je ne vois pas du tout d'où tout cela peut venir, si même version de Office et même version de OS et que tu as vraiment tout dit.
Désolé.

PS : ah oui : certaines références nécessaires ne sont peut-être pas cochées sur l'autre machine.
Compare donc les références cochées sur l'une et sur l'autre.
Si toujours problème ===>> j'abdique.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 févr. 2015 à 22:03
Ah oui : encore une chose :
Ton autre PC a peut-être près de trois mois de retard sur les autres.
Va lire attentivement tout ce qui figure ici :l
http://codes-sources.commentcamarche.net/forum/affich-10040792-important-bug-mise-a-jour-office-9-decembre-2014
Ce PC est peut-être encore dans ce cas de figure.
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
25 févr. 2015 à 21:28
Bonsoir ucfoutu

Je suis allé voir mais je ne suis pas confronté a ce problème, cependant, j'ai continué mais recherche et j'ai fais comme suis :

2 fichiers bien distinct, BDD qui est ma base de données de défaut puis Fvierge que sert pour editer les rapports.

Maintenant, de ce fichier BDD :
1/ il me créer mon dossier au démarrage puis inscrit son chemin dans la cellule BR1 de la feuille BDD.
ça fonctionne sur toutes les machines, mais... lors de la création d'un rapport un autre problème se fait... Fvierge ne semble pas vouloir se copier...voici le code :

Sub creer_fiches2(control As IRibbonControl)
Dim bdd As Workbook, Fvierge As Workbook
Dim rep As String
Dim Classeurpath As String
Dim Classeurphoto As String
Dim ClasseurPlan As String
Dim accessibilite, inaccessibilite, accespart, accescom, faiencage, ecaillage, cloqgonf, eclatbeton, betonautre As String
Dim niveau, atelier, SALLE1, SALLE2, betoncom, traversante, nontraversante, noncaracterisable, infiltrante, enreseau As String
Dim sup1mm, inf1mm, emax, emaxsalle2, corrosion, pasdacier, acierapparent, naturelle, rougeatre, blanchatre As String
Dim trace, pastrace, coulure, humidite, seche, efflorescence, aureole As String
Dim nfiche, nb, chemin, salle1_3R, salle1_zone4, salle1_feu, salle1_ext, salle1_123 As String
Dim salle2_3R, salle2_zone4, salle2_feu, salle2_ext, salle2_123, murN, murO, murS, murE, PLANCHER As String
Dim RADIER, PLAFOND, POTEAU, POUTRE, INTERIEUR, remarques, photo1, photo2, photo3, plan As String


'chemin = Sheets("BDD").Range("AZV1").Value (en prévision, ne sert a rien pour le moment)
nb = Sheets("BDD").Range("AZT1").Value

'i est le nombre de fissures, la ligne de départ est 5, le nombre de fissures est n

'ligne_fin = 5 + nb - 1
ligne_fin = Cells.Find("*", Range("B1"), , , xlByRows, xlPrevious).Row


rep = Environ("USERPROFILE") & "\"
Classeurpath = rep & "Documents\HagueInspection\Fiches\Fvierge.xlsm"
Classeurphoto = rep & "Documents\HagueInspection\Photos\RIMG" 'RIMG représente le préfixe de la photo il peut être changer en fonction de l'appareil
ClasseurPlan = rep & "Documents\HagueInspection\plansdef\PLAN" 'PLAN représente le préfixe du nom de fichier

Set bdd = ThisWorkbook
Set Fvierge = Workbooks.Open(Classeurpath)


With Fvierge.Worksheets("Fvierge")
' nfiche = bdd.Worksheets("BDD").Range("G" & i)
For i = 5 To ligne_fin
'ici j'écris le code qui remet toutes les valeurs de BDD vers le Rapport
nfiche = bdd.Worksheets("BDD").Range("G" & i)
Sheets("Fvierge").Copy Before:=Sheets("Fvierge")
ActiveSheet.Name = nfiche
On Error Resume Next
atelier = bdd.Worksheets("BDD").Range("C" & i).Value
niveau = bdd.Worksheets("BDD").Range("D" & i).Value
SALLE1 = bdd.Worksheets("BDD").Range("E" & i).Value
SALLE2 = bdd.Worksheets("BDD").Range("F" & i).Value
accessibilite = bdd.Worksheets("BDD").Range("Q" & i).Value
inaccessibilite = bdd.Worksheets("BDD").Range("R" & i).Value
accespart = bdd.Worksheets("BDD").Range("S" & i).Value
accescom = bdd.Worksheets("BDD").Range("T" & i).Value
faiencage = bdd.Worksheets("BDD").Range("U" & i).Value
ecaillage = bdd.Worksheets("BDD").Range("V" & i).Value
cloqgonf = bdd.Worksheets("BDD").Range("W" & i).Value
eclatbeton = bdd.Worksheets("BDD").Range("X" & i).Value
betonautre = bdd.Worksheets("BDD").Range("Y" & i).Value
betoncom = bdd.Worksheets("BDD").Range("Z" & i).Value
nontraversante = bdd.Worksheets("BDD").Range("AA" & i).Value
traversante = bdd.Worksheets("BDD").Range("AB" & i).Value
noncaracterisable = bdd.Worksheets("BDD").Range("AC" & i).Value
infiltrante = bdd.Worksheets("BDD").Range("AD" & i).Value
enreseau = bdd.Worksheets("BDD").Range("AE" & i).Value
emax = bdd.Worksheets("BDD").Range("AF" & i).Value
emaxsalle2 = bdd.Worksheets("BDD").Range("AG" & i).Value
inf1mm = bdd.Worksheets("BDD").Range("AH" & i).Value
sup1mm = bdd.Worksheets("BDD").Range("AI" & i).Value
corrosion = bdd.Worksheets("BDD").Range("AJ" & i).Value
pasdacier = bdd.Worksheets("BDD").Range("AK" & i).Value
acierapparent = bdd.Worksheets("BDD").Range("AL" & i).Value
naturelle = bdd.Worksheets("BDD").Range("AM" & i).Value
rougeatre = bdd.Worksheets("BDD").Range("AN" & i).Value
blanchatre = bdd.Worksheets("BDD").Range("AO" & i).Value
pastrace = bdd.Worksheets("BDD").Range("AP" & i).Value
trace = bdd.Worksheets("BDD").Range("AQ" & i).Value
coulure = bdd.Worksheets("BDD").Range("AR" & i).Value
humidite = bdd.Worksheets("BDD").Range("AS" & i).Value
seche = bdd.Worksheets("BDD").Range("AT" & i).Value
efflorescence = bdd.Worksheets("BDD").Range("AU" & i).Value
aureole = bdd.Worksheets("BDD").Range("AV" & i).Value
salle1_3R = bdd.Worksheets("BDD").Range("AW" & i).Value
salle1_zone4 = bdd.Worksheets("BDD").Range("AX" & i).Value
salle1_feu = bdd.Worksheets("BDD").Range("AY" & i).Value
salle1_ext = bdd.Worksheets("BDD").Range("AZ" & i).Value
salle1_123 = bdd.Worksheets("BDD").Range("BA" & i).Value
salle2_3R = bdd.Worksheets("BDD").Range("BB" & i).Value
salle2_zone4 = bdd.Worksheets("BDD").Range("BC" & i).Value
salle2_feu = bdd.Worksheets("BDD").Range("BD" & i).Value
salle2_ext = bdd.Worksheets("BDD").Range("BE" & i).Value
salle2_123 = bdd.Worksheets("BDD").Range("BF" & i).Value
murN = bdd.Worksheets("BDD").Range("H" & i).Value
murS = bdd.Worksheets("BDD").Range("I" & i).Value
murO = bdd.Worksheets("BDD").Range("J" & i).Value
murE = bdd.Worksheets("BDD").Range("K" & i).Value
PLANCHER = bdd.Worksheets("BDD").Range("L" & i).Value
RADIER = bdd.Worksheets("BDD").Range("M" & i).Value
PLAFOND = bdd.Worksheets("BDD").Range("N" & i).Value
POUTRE = bdd.Worksheets("BDD").Range("O" & i).Value
POTEAU = bdd.Worksheets("BDD").Range("P" & i).Value
remarques = bdd.Worksheets("BDD").Range("BG" & i).Value
defphoto1 = "RIMGP" & Format(bdd.Worksheets("BDD").Range("BH" & i).Value, "0000") & ".jpg"
defphoto2 = "RIMGP" & Format(bdd.Worksheets("BDD").Range("BI" & i).Value, "0000") & ".jpg"
defphoto3 = "RIMGP" & Format(bdd.Worksheets("BDD").Range("BJ" & i).Value, "0000") & ".jpg"
Sheets(nfiche).Range("F6") = nfiche
Sheets(nfiche).Range("E8") = atelier
Sheets(nfiche).Range("P8") = niveau
Sheets(nfiche).Range("E9") = SALLE1
Sheets(nfiche).Range("E10") = SALLE2
Sheets(nfiche).Range("G16") = accessibilite
Sheets(nfiche).Range("J16") = inaccessibilite
Sheets(nfiche).Range("O16") = accespart
Sheets(nfiche).Range("S16") = accescom
Sheets(nfiche).Range("G26") = faiencage
Sheets(nfiche).Range("G28") = ecaillage
Sheets(nfiche).Range("G30") = cloqgonf
Sheets(nfiche).Range("J26") = eclatbeton
Sheets(nfiche).Range("J28") = betonautre
Sheets(nfiche).Range("K30") = betoncom
Sheets(nfiche).Range("G38") = nontraversante
Sheets(nfiche).Range("G40") = traversante
Sheets(nfiche).Range("G42") = noncaracterisable
Sheets(nfiche).Range("J38") = infiltrante
Sheets(nfiche).Range("J40") = enreseau
Sheets(nfiche).Range("P40") = emax
Sheets(nfiche).Range("P42") = emaxsalle2
Sheets(nfiche).Range("J42") = inf1mm
Sheets(nfiche).Range("O38") = sup1mm
Sheets(nfiche).Range("Z26") = corrosion
Sheets(nfiche).Range("Z28") = pasdacier
Sheets(nfiche).Range("Z30") = acierapparent
Sheets(nfiche).Range("G50") = naturelle
Sheets(nfiche).Range("G52") = rougeatre
Sheets(nfiche).Range("G54") = blanchatre
Sheets(nfiche).Range("O50") = pastrace
Sheets(nfiche).Range("O53") = trace
Sheets(nfiche).Range("V50") = coulure
Sheets(nfiche).Range("V52") = humidite
Sheets(nfiche).Range("V54") = seche
Sheets(nfiche).Range("Z50") = efflorescence
Sheets(nfiche).Range("Z52") = aureole
Sheets(nfiche).Range("D62") = salle1_3R
Sheets(nfiche).Range("G62") = salle1_zone4
Sheets(nfiche).Range("J62") = salle1_feu
Sheets(nfiche).Range("O62") = salle1_ext
Sheets(nfiche).Range("R62") = salle1_123
Sheets(nfiche).Range("D67") = salle2_3R
Sheets(nfiche).Range("G67") = salle2_zone4
Sheets(nfiche).Range("J67") = salle2_feu
Sheets(nfiche).Range("O67") = salle2_ext
Sheets(nfiche).Range("R67") = salle2_123
Sheets(nfiche).Range("D102") = murN
Sheets(nfiche).Range("G102") = murS
Sheets(nfiche).Range("J102") = murO
Sheets(nfiche).Range("O102") = murE
Sheets(nfiche).Range("D104") = PLANCHER
Sheets(nfiche).Range("G104") = RADIER
Sheets(nfiche).Range("J104") = PLAFOND
Sheets(nfiche).Range("O104") = POUTRE
Sheets(nfiche).Range("R104") = POTEAU
Sheets(nfiche).Range("C71") = remarques

'Le code qui mettra les photos au bon endroit

photo1 = Classeurphoto & Format(bdd.Worksheets("BDD").Range("BH" & i).Value, "0000") & ".jpg"
If Dir(photo1) <> "" Then
Sheets(nfiche).Image1.Picture = LoadPicture(photo1)
Sheets(nfiche).Range("G186") = defphoto1
End If

photo2 = Classeurphoto & Format(bdd.Worksheets("BDD").Range("BI" & i).Value, "0000") & ".jpg"
If Dir(photo2) <> "" Then
Sheets(nfiche).Image2.Picture = LoadPicture(photo2)
Sheets(nfiche).Range("G211") = defphoto2
End If

photo3 = Classeurphoto & Format(bdd.Worksheets("BDD").Range("BJ" & i).Value, "0000") & ".jpg"
If Dir(photo3) <> "" Then
Sheets(nfiche).Image3.Picture = LoadPicture(photo3)
Sheets(nfiche).Range("G237") = defphoto3
End If

'Le code qui mettra le plan au bon endroit
plan = ClasseurPlan & Format(bdd.Worksheets("BDD").Range("BM" & i).Value, "0000") & ".jpg"
If Dir(plan) <> "" Then
Sheets(nfiche).Image4.Picture = LoadPicture(plan)
End If
Application.DisplayAlerts = False
Sheets("Fvierge (2)").Delete

Next i
End With
End Sub


Et voilci la nouvelle ligne pointée maintenant :

Sheets("Fvierge").Copy Before:=Sheets("Fvierge")


Le deux problèmes sont liés... mais je ne comprend pas pourquoi

Merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 févr. 2015 à 21:49
Tu "embrouilles" tellement tout que cela fait mal aux yeux. Vraiment mal !
A un tel point que j'ai envie (vraiment envie d'abandonner, plutôt que de t'accompagner dans un tel "bastringue").
Essaye ceci (sans grande conviction) :
Fvierge.Sheets("Fvierge").Copy Before:=Fvierge.Sheets("Fvierge")

(je ne serais pas étonné de ce que tu auras alors encore une erreur plus loin, dans ce meli-melo, mais bon ...)

PS : et ce "on error resume next", il est là pour cacher quelle autre crotte ?
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
25 févr. 2015 à 22:00
Il est vrai que c'est le bastringue comme tu le dis, et j'en suis désolé, le code est surement mal fait, mais je ne suis pas un grand développeur... si ce code est simplifiable je suis preneur (mais ce n'est malheureusement pas l'objet de ce post)...

Cependant ça ne fonctionne pas... même erreur

le On Error Resume Next cache bien une crotte effectivement...

En fait le but au final est que si je clique sur mon bouton créer fiche, il m'ouvre le fichier "Fvierge", nomme cette feuille "nfiche", en suite nfiche prend le numero dans une cellule de BDD.

Et visiblement ce code est tellement bordellique que ça veut pas... mais sur le miens (qui est celui ou je l'ai créé ça fonctionne)

En espérant que tu n'abandonnes pas

Merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 févr. 2015 à 07:52
Et visiblement ce code est tellement bordellique que ça veut pas... mais sur le miens (qui est celui ou je l'ai créé ça fonctionne)

En espérant que tu n'abandonnes pas



Tous tes "malheurs" résultent à mon avis de plusieurs "petits" facteurs qui ont leur source dans ce labyrinthe. Il suffirait que l'utilisateur (sur l'autre machine, par exemple) s'amuse à se "promener" dans un autre classeur (voire ait simplement ouvert un autre classeur ... - et/ou plein de petites autres "choses" du genre - ...) pour que tout s'écroule.
Je ne peux t'aider que si tu reprends toute ton application à zéro, pas à pas, sur chacune des étapes (en définissant très clairement, pour chaque étape -une étape par discussion - les tenants et aboutissants, accompagnés du code tenté pour cette SEULE étape).
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
2 mars 2015 à 13:11
Bonjour ucfoutu,

Tu as raison, je vais refaire cette partie de l'application (concernant la création des rapports) car l'autre partie fonctionne sur toutes machines...

En attendant merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 mars 2015 à 13:25
Comme tu veux tu "choises" (expression de ma jeunesse).
Pour ton info, cependant : j'ai lu tes autres discussions à propos de cette appli ===>> Tu ferais vraiment mieux de tout reprendre à zéro, plutôt que, te contentant de voir que ceci ou cela marche, de continuer sur une "lancée" qui aboutira inévitablement à une quasi impossibilité d'assurer la maintenance d'un tel labyrinthe, y compris par toi-même, dans moins de six mois.
0
Rejoignez-nous