VBA workbook caché
Hello tout le monde,
J'ai un gros soucis, j'utilise fichier depuis plusieurs mois et je n'ai jamais eu de problème avec depuis qu'il est bien en place.
Sauf qu'aujourd'hui à ma grande surprise, j'ai un message d'erreur et je ne comprends pas pourquoi.
Le message est le suivant :
Erreur d'exécution 13
Incompatibilité de type
La ligne suivante est surlignée :
Sub DLUO()
Dim Réf As String
Dim x As Long, y As Long, z As Long
Range("DLUO").MergeArea.ClearContents
Réf = Sheets("TRAME").Cells(14, 2) & Sheets("TRAME").Cells(13, 2) & Sheets("TRAME").Cells(15, 2)
For x = 5 To Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Range("A" & Rows.Count).End(xlUp).Row
[Surligner] If Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Cells(x, 4) & Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Cells(x, 6) & Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Cells(x, 7) = Réf Then[/Surligner]
For y = 15 To 15
If Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Cells(x, y).Value <> "" Then
Sheets("TRAME").Range("DLUO") = Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Cells(x, y)
End If
Next
End If
Next
End Sub
et ça me dit que le workbook est caché, je ne sais pas pourquoi ...
Quelqu'un a une idée ?? c'est vraiment important
Bonjour,
For x = 5 To ??? Workbooks("Base Mère.xlsm")
il manquerait pas un chiffre là comme pour y ?
For y = 15 To 15......If Workbooks("Base Mère.xlsm").Work
euh non je luis dis d'aller jusqu'en bas et pour toutes les colonnes.
Range("A" & Rows.Count).End(xlUp).Row
Et ma macro fonctionnait très bien avant ...
C'est la ligne juste en dessous qui est surlignée
Merci
Bonjour,
Le fichier ("Base Mère.xlsm") n'aurait-il pas été renommé ou déplacé ??
Les feuilles n'auraient-elles pas été renommées ?
Les champs nommés n'auraient-ils pas été renommés ou supprimés ?
ric
Bonjour,
non justement rien n'a été déplacé ni renommé ... (c'est ce que je me suis demandé directement)
Je viens de tester un code dans un nouveau classeur, qui va chercher une info dans cette fameuse base mère.
Je constate que lorsque je fais le code suivant tout va bien :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("liste_origine")) Is Nothing Then Call DLUO
End Sub
'Sub DLUO()
'Dim Réf As String
'Dim x As Long, y As Long, z As Long
'Range("DLUO").ClearContents
'Réf = Sheets("Feuil1").Cells(14, 2) & Sheets("Feuil1").Cells(13, 2)
'For x = 5 To Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Range("A" & Rows.Count).End(xlUp).Row
' If Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Cells(x, 6) & Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Cells(x, 4) = Réf Then
' For y = 15 To 15
' If Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Cells(x, y).Value <> "" Then
' Sheets("Feuil1").Range("DLUO") = Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Cells(x, y)
' End If
' Next
' End If
' Next
'End Sub
Par contre dès que je rajoute la prise en compte d'une colonne supplémentaire, rien ne va plus, le message d'erreur revient :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("liste_origine")) Is Nothing Then Call DLUO
End Sub
Sub DLUO()
Dim Réf As String
Dim x As Long, y As Long, z As Long
Range("DLUO").ClearContents
Réf = Sheets("Feuil1").Cells(14, 2) & Sheets("Feuil1").Cells(13, 2) & Sheets("Feuil1").Cells(15, 2)
For x = 5 To Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Range("A" & Rows.Count).End(xlUp).Row
If Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Cells(x, 6) & Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Cells(x, 4) & Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Cells(x, 7) = Réf Then
For y = 15 To 15
If Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Cells(x, y).Value <> "" Then
Sheets("Feuil1").Range("DLUO") = Workbooks("Base Mère.xlsm").Worksheets("Base Qualité").Cells(x, y)
End If
Next
End If
Next
End Sub
Alors depuis pas longtemps, on a eu un soucis avec cette base, certaines cellules se mettent automatiquement en format date (et personne ne sait pourquoi...)
et justement la colonne dont j'ai besoin a été impactée. Sauf que quand je remets tout au format texte, ça ne fonctionne toujours pas. Et les cellules finissent par se remettre au format date.
Pensez-vous que c'est lié ?
Avez-vous des pistes pour remédier à ça ?
En vous remerciant !
Clem
Bonjour à tous,
Un peu de remise à niveau sur l' indentation et la simplification ne fera pas de mal je pense, même si sa ne résout pas le problème
Sub DLUO()
Dim Réf As String
Dim x As Long, y As Long, z As Long
Dim ws1
Dim ws2
Set ws1 = Sheets("Feuil1")
Set ws2 = Workbooks("Base Mère.xlsm").Worksheets("Base Qualité")
Range("DLUO").ClearContents
Réf = ws1.Cells(14, 2) & ws1.Cells(13, 2) & ws1.Cells(15, 2)
For x = 5 To ws2.Range("A" & Rows.Count).End(xlUp).Row
If ws2.Cells(x, 6) & ws2.Cells(x, 4) & ws2.Cells(x, 7) = Réf Then
For y = 15 To 15
If ws2.Cells(x, y).Value <> "" Then
ws1.Range("DLUO") = ws2.Cells(x, y)
End If
Next y
End If
Next x
Set ws1 = Nothing
Set ws2 = Nothing
End Sub
Tout est bon à prendre et me sera utile
Je vais tester on ne sait jamais même si je pense que le problème vient de la base
Merci
Essaye d’exécuter le code en Pas à Pas ( F8 dans le code ) afin de voir à quel moment intervient l'erreur et sur qu'elle ligne