Incompatibilité de type
VBuzze
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
VBuzze Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
VBuzze Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
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 :
et voici la ligne 10 :
Merci d'avance !
PS : Est-il possible de mettre une condition sur le type ? avec string par exemple ?
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 ?
A voir également:
- Incompatibilité de type
- Clear type - Guide
- Type de ram - Guide
- Comment changer le type de fichier - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Faiblesse type spectre ✓ - Forum Jeux vidéo
7 réponses
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
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
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 à :
Savez vous comment faire ?
Merci d'avance,
Mon script :
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
Bonjour,
il faudrait vos fichiers pour tester.
il faudrait vos fichiers pour tester.
Bonjour à tous,
surtout 10 400 000 de boucles ça doit être terriblement lent.
C'est optimisable.
eric
surtout 10 400 000 de boucles ça doit être terriblement lent.
C'est optimisable.
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
'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
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
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
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