Incompatibilité de type

Fermé
VBuzze Messages postés 10 Date d'inscription jeudi 3 juillet 2014 Statut Membre Dernière intervention 8 juillet 2014 - 4 juil. 2014 à 17:22
VBuzze Messages postés 10 Date d'inscription jeudi 3 juillet 2014 Statut Membre Dernière intervention 8 juillet 2014 - 8 juil. 2014 à 16:42
Bonjour,
J'ai récemment eu à écrire un script ayant pour but de rajouter des traductions.
J'ai un fichier de base, avec un liste de 1000 noms d'options en français (sur lequel le script est lancé), et un autre fichier comprenant une listes de tous les noms en français existant (dans l'entreprises), et leurs traductions en plusieurs langues.
Le but est, pour chaque ligne de mon fichier de base, de vérifier si le même nom ne peut pas être trouvé dans la colonne français du second fichier. Si jamais cela arrivait, copier dans les colonnes adjacentes leurs traductions (colonnes adjacentes, sur la même ligne, du second fichier "traduction").
Le fichiers traductions fait environs 10400 lignes et 4 colonnes (1 par langue).

Cependant, à la ligne 10, détaillée-ci après, après avoir réussi un "match" (donc plusieurs boucles), le programme me dit cela : Incompatibilité de type
Il n'y a sur les 2 fichiers, normalement, que du texte, (string).
Une idée ?

Voici mon script :


Sub ref2()
Dim i As Integer
Dim j As Integer
Dim wbfil As Workbook
Dim wbre As Worksheet
Set wbfil = Workbooks.Open("chemin_du_excel_avec_tarductions")
Set wsre = wbfil.Worksheets("PME")
For j = 1 To 1000
For i = 1 To 10400
If ThisWorkbook.Worksheets("RefOpt").Range("C" & j) = wsre.Range("H" & i) Then
ThisWorkbook.Worksheets("RefOpt").Range("D" & j) = wsre.Range("F" & i)
ThisWorkbook.Worksheets("RefOpt").Range("E" & j) = wsre.Range("E" & i)
ThisWorkbook.Worksheets("RefOpt").Range("F" & j) = wsre.Range("G" & i)
End If
Next
Next
Set wsre = Nothing
Set wbfil = Nothing

End Sub

et voici la ligne 10 :


If ThisWorkbook.Worksheets("RefOpt").Range("C" & j) = wsre.Range("H" & i) Then

Merci d'avance !

PS : Est-il possible de mettre une condition sur le type ? avec string par exemple ?




7 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
4 juil. 2014 à 17:29
Bonjour,

quand vous avez l'erreur, click sur debugage, passez le curseur souris sur la ligne en erreur pour voir le contenu de vos deux range
2
VBuzze Messages postés 10 Date d'inscription jeudi 3 juillet 2014 Statut Membre Dernière intervention 8 juillet 2014
Modifié par VBuzze le 4/07/2014 à 17:47
Merci, j'ai pu voir qu'une de mes 2 cases était de type Nothing, je voudrais donc "sauter" les cases de type Nothing. J'ai fait cela mais il me dit encore la même chose à :

b = wsre.Range("H" & i)

Savez vous comment faire ?

Merci d'avance,

Mon script :


Sub ref2()
Dim i As Integer
Dim j As Integer
Dim a As String
Dim b As String
Dim wbfil As Workbook
Dim wbre As Worksheet
Set wbfil = Workbooks.Open("chemin_excel_traductions")
Set wsre = wbfil.Worksheets("PME")
For j = 1 To 1000
For i = 1 To 10400
a = ThisWorkbook.Worksheets("RefOpt").Range("C" & j)
Do While wsre.Range("H" & i) is Nothing
i = i + 1
Loop
b = wsre.Range("H" & i)
If a = b Then
ThisWorkbook.Worksheets("RefOpt").Range("D" & j) = wsre.Range("F" & i)
ThisWorkbook.Worksheets("RefOpt").Range("E" & j) = wsre.Range("E" & i)
ThisWorkbook.Worksheets("RefOpt").Range("F" & j) = wsre.Range("G" & i)
End If
Next
Next
Set wsre = Nothing
Set wbfil = Nothing

End Sub

0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
5 juil. 2014 à 09:01
Bonjour,

il faudrait vos fichiers pour tester.
0
VBuzze Messages postés 10 Date d'inscription jeudi 3 juillet 2014 Statut Membre Dernière intervention 8 juillet 2014
7 juil. 2014 à 09:09
J'ai le regret de devoir vous répondre défavorablement, ces fichiers sont internes à l'entreprise, et ne peuvent être divulgués.
Toutes mes excuses,

Pensez vous pour autant que le script est conforme (ou non) à mes attentes ? (surtout pour la partie while et b=.. )

Merci d'avance,
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
5 juil. 2014 à 12:48
Bonjour à tous,

surtout 10 400 000 de boucles ça doit être terriblement lent.
C'est optimisable.

eric
0

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

Posez votre question
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
5 juil. 2014 à 21:47
'lut,

C'est sympa d'avoir des retours ou des réponses aux questions sur des topics précédents ... https://forums.commentcamarche.net/forum/affich-30449122-appliquer-un-sub-a-un-ensemble-de-fichiers-excel-meme-dossier#5

0
VBuzze Messages postés 10 Date d'inscription jeudi 3 juillet 2014 Statut Membre Dernière intervention 8 juillet 2014
7 juil. 2014 à 09:24
Mes tests restent infructueux jusqu'ici..
Une idée ?

Merci d'avance,

Victor
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
7 juil. 2014 à 10:15
Bonjour,

oui, que tu mettes à dispo un fichier de travail avec les différents cas rencontrés.
20 lignes suffisent.

eric
0
VBuzze Messages postés 10 Date d'inscription jeudi 3 juillet 2014 Statut Membre Dernière intervention 8 juillet 2014
8 juil. 2014 à 09:33
J'ai finalement trouvé la cause de mon problème.
Dans le fichier traduction que l'on m'avait donné, certaines cases contenaient des erreurs (#VALEUR!), je les ai donc supprimé manuellement au fil des 10400 lignes.
Le script a ensuite fonctionné.
Merci beaucoup de votre aide quoi qu'il en soit,
Pour information, quel type est affecté à ce type de case ?
Cordialement,

Victor
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
8 juil. 2014 à 09:51
Bonjour,

if iserror(...) then

eric
0
VBuzze Messages postés 10 Date d'inscription jeudi 3 juillet 2014 Statut Membre Dernière intervention 8 juillet 2014
8 juil. 2014 à 16:42
Merci !
0