modification code macro pour fonctionnement sur xls 2003

babouze64

XLDnaute Nouveau
Bonjour à tous,

Voici mon problème, lorsque j'ouvre mon fichier avec xls 2007, pas de soucis
par contre quand je l'utilise avec xls 2003, la macro s'effectue entiérement mais au résultat, il me manque une action.

en voici le code correspondant :

Sh.ControlFormat.LinkedCell = "'" & RepM.Parent.Name & "'!" & Range("A" & RepM.Row).Address




Pouvez vous me dire qu'est ce qui n'est pas pris en compte par la version 2003 qui empeche l'execution de cette ligne ?

Merci d'avance.
 

babouze64

XLDnaute Nouveau
Re : modification code macro pour fonctionnement sur xls 2003

effectivement,
à la maison xls 2007 (développement du fichier et de ces macros)
au boulot xls 2003 (execution des macros)
merci pour la réponse, j'essaye dés lundi ...

PS : je peux afficher l'ensemble de la macro si souhaité ...
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : modification code macro pour fonctionnement sur xls 2003

Oui Si c'est au boulot , je doute que quelqu'un ait ajouté le mod sup
autre chose , apparemment Sh doit etre declaré "as Shape"
Sh.ControlFormat.LinkedCell > doit etre du genre "$G$12" type range
Sinon oui , joint ta macro ... c'est nettement mieux pour tester
Bonne nuit
 

babouze64

XLDnaute Nouveau
Re : modification code macro pour fonctionnement sur xls 2003

Voici la macro en question avec les 2 lignes en rouges posant problémes selon le déroulement de cette macro (suivant mes choix)

Sub Liaisons()
Dim WsB As Worksheet 'WsB est une feuille
Dim WsM As Worksheet 'WsM est une feuille
Dim Sh As Shape 'Sh est une case à cocher
Dim RepB As Range 'RepB est une réponse
Dim RepL As Range 'RepL est une réponse
Dim RepM As Range

Set WsB = Sheets("base de donnée reservation") 'WsB = feuille base de donnée reservation
Set WsM = Sheets("MBC") 'WsM = feuille MBC


On Error Resume Next 'enlève la gestion des erreurs pour le reste du programme,
Set RepB = Nothing 'Sans ça on ne peut pas quitter l'InputBox avec annuler ou croix de fermeturesert à quitter l'InputBox avec annuler ou croix de fermeture
Set RepL = Nothing
Set RepM = Nothing
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'demande de la ligne du tableau de reservation à lier
Set RepB = Application.InputBox("Ligne du matériel à lier", Type:=8)
If RepB Is Nothing Then Exit Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

' demande de liaison avec un descriptif oui ou non
If MsgBox("Voulez vous lier à un descriptif?", vbYesNo, "Demande de confirmation") = vbYes Then

'demande d'association du descriptif correspondant
Set RepL = Application.InputBox(" Ligne du descriptif correspondant", Type:=8)
If RepB Is Nothing Then Exit Sub

'Recherche du Checkbox dans la colonne B
For Each Sh In WsB.Shapes
If Sh.TopLeftCell.Address = Range("B" & RepB.Row).Address Then
Exit For
End If
Next Sh
If Sh Is Nothing Then
MsgBox "Pas de case à cocher dans la cellule " & Range("B" & RepB.Row).Address
Exit Sub
End If

'automatisation du lien de controle de la case MAQF à cocher
Sh.ControlFormat.LinkedCell = "'" & RepL.Parent.Name & "'!" & Range("A" & RepL.Row).Address
WsB.Range("AI" & RepB.Row).Formula = "='" & RepL.Parent.Name & "'!" & Range("A" & RepL.Row).Address

'REPERE :la colonne I de la même ligne du descriptif = la colonne D de la même ligne du listing reservation
Sheets(RepL.Parent.Name).Range("I" & RepL.Row).Formula = "='" & RepB.Parent.Name & "'!" & Range("D" & RepB.Row).Address

'DESIGNATION :la colonne B de la même ligne du descriptif = la colonne E de la même ligne du listing reservation
Sheets(RepL.Parent.Name).Range("B" & RepL.Row).Formula = "='" & RepB.Parent.Name & "'!" & Range("E" & RepB.Row).Address

'QUANTITE :la colonne E de la même ligne du descriptif = la colonne Y de la même ligne du listing reservation
Sheets(RepL.Parent.Name).Range("E" & RepL.Row).Formula = "='" & RepB.Parent.Name & "'!" & Range("Y" & RepB.Row).Address

End If

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WsB.Select
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'demande de liaison avec une ligne MBC oui ou non
If MsgBox("Voulez vous lier à un MBC?", vbYesNo, "Demande de confirmation") = vbYes Then

WsM.Select

'demande de création d'une ligne vierge dans MBC oui ou non
If MsgBox("Voulez vous creer une ligne vierge à lier ?", vbYesNo, "Demande de confirmation") = vbYes Then
Application.Run "nouveau_MABC"
MsgBox "une nouvelle ligne a été crée"
End If

'demande d'association de la ligne correspondante
Set RepM = Application.InputBox(" Ligne du MBC correspondant", Type:=8)
If RepM Is Nothing Then Exit Sub

'Recherche du Checkbox dans la colonne C
For Each Sh In WsB.Shapes
If Sh.TopLeftCell.Address = Range("C" & RepB.Row).Address Then
Exit For
End If
Next Sh
If Sh Is Nothing Then
MsgBox "Pas de case à cocher dans la cellule " & Range("C" & RepB.Row).Address
Exit Sub
End If

'automatisation du lien de controle de la case MABC à cocher
Sh.ControlFormat.LinkedCell = "'" & RepM.Parent.Name & "'!" & Range("A" & RepM.Row).Address
WsB.Range("AJ" & RepB.Row).Formula = "='" & RepM.Parent.Name & "'!" & Range("A" & RepM.Row).Address

'DESIGNATION :la colonne B de la même ligne du MABC = la colonne E de la même ligne du listing reservation
Sheets(RepM.Parent.Name).Range("B" & RepM.Row).Formula = "='" & RepB.Parent.Name & "'!" & Range("E" & RepB.Row).Address

'QUANTITE :la colonne C de la même ligne du MABC = la colonne Y de la même ligne du listing reservation
Sheets(RepM.Parent.Name).Range("C" & RepM.Row).Formula = "='" & RepB.Parent.Name & "'!" & Range("Y" & RepB.Row).Address

'REPERE :la colonne D de la même ligne du MABC = la colonne D de la même ligne du listing reservation
Sheets(RepM.Parent.Name).Range("D" & RepM.Row).Formula = "='" & RepB.Parent.Name & "'!" & Range("D" & RepB.Row).Address




End If

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WsB.Select
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
On Error GoTo 0 ' Restaure la gestion des erreurs
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End Sub