Incompatibilité de type

[Fermé]
Signaler
Messages postés
10
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
8 juillet 2014
-
Messages postés
10
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
8 juillet 2014
-
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

Messages postés
15831
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 juillet 2021
1 512
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
10
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
8 juillet 2014

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

Messages postés
15831
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 juillet 2021
1 512
Bonjour,

il faudrait vos fichiers pour tester.
Messages postés
10
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
8 juillet 2014

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,
Messages postés
24145
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
30 juillet 2021
6 847
Bonjour à tous,

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

eric
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 166
'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

Messages postés
10
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
8 juillet 2014

Mes tests restent infructueux jusqu'ici..
Une idée ?

Merci d'avance,

Victor
Messages postés
24145
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
30 juillet 2021
6 847
Bonjour,

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

eric
Messages postés
10
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
8 juillet 2014

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
Messages postés
24145
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
30 juillet 2021
6 847
Bonjour,

if iserror(...) then

eric
Messages postés
10
Date d'inscription
jeudi 3 juillet 2014
Statut
Membre
Dernière intervention
8 juillet 2014

Merci !