Incompatibilité de type
Pommette
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je commence le VBA et je ne comprend pas une erreur, il me met incompatibilité de type au tout début de mon code mais surligne une variable plus bas (en gras):
Sub search()
Dim n_case As Integer, n_case2 As Integer, count_gene As Integer
Dim nb_boucle As Integer, gene1 As String, gene2 As String
For n_case = 1 To Chr(4) Step 1
For n_case2 = 1 To Chr(4) Step 1
nb_boucle = nb_boucle + 1
Workbooks("1").Worksheet("Feuil1").Activate
Workbooks("1").Worksheet("Feuil1").Range("A" & n_case).Select
gene1 = Range("A" & n_case)
Workbooks("1").Worksheet("Feuil2").Activate
Workbooks("1").Worksheet("Feuil2").Range("A" & n_case2).Select
gene2 = Range("A" & n_case2)
If gene1 Is gene2 Then
count_gene = count_gene + 1
'les écrire quelque part plus tard!
End If
Next n_case2
Next n_case
MsgBox "j'ai fait " & nb_boucle & "tour de boucles dans la feuille 2"
MsgBox "j'ai compté " & count_gene & "de gène identique"
End Sub
je continue à chercher mais un coup de main ne serait pas de trop ...
Merci d'avance
Je commence le VBA et je ne comprend pas une erreur, il me met incompatibilité de type au tout début de mon code mais surligne une variable plus bas (en gras):
Sub search()
Dim n_case As Integer, n_case2 As Integer, count_gene As Integer
Dim nb_boucle As Integer, gene1 As String, gene2 As String
For n_case = 1 To Chr(4) Step 1
For n_case2 = 1 To Chr(4) Step 1
nb_boucle = nb_boucle + 1
Workbooks("1").Worksheet("Feuil1").Activate
Workbooks("1").Worksheet("Feuil1").Range("A" & n_case).Select
gene1 = Range("A" & n_case)
Workbooks("1").Worksheet("Feuil2").Activate
Workbooks("1").Worksheet("Feuil2").Range("A" & n_case2).Select
gene2 = Range("A" & n_case2)
If gene1 Is gene2 Then
count_gene = count_gene + 1
'les écrire quelque part plus tard!
End If
Next n_case2
Next n_case
MsgBox "j'ai fait " & nb_boucle & "tour de boucles dans la feuille 2"
MsgBox "j'ai compté " & count_gene & "de gène identique"
End Sub
je continue à chercher mais un coup de main ne serait pas de trop ...
Merci d'avance
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
6 réponses
Bonjour,
remplacez:
par
ca m'etonnerait que ca marche le chr(4)
For n_case = 1 To Chr(4) Step 1
For n_case2 = 1 To Chr(4) Step 1
il faut que ce soit un numerique ex: 4 ou 25
remplacez:
If gene1 Is gene2 Then
par
If gene1 = gene2 Then
ca m'etonnerait que ca marche le chr(4)
For n_case = 1 To Chr(4) Step 1
For n_case2 = 1 To Chr(4) Step 1
il faut que ce soit un numerique ex: 4 ou 25
Re,
Mettez a dispo un fichier exemples avec des donnees bidons et les explications de ce que vous cherchez
Pour transmettre un fichier,
il faut passer par un site de pièce jointe tel que cjoint.com
Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
Mettez a dispo un fichier exemples avec des donnees bidons et les explications de ce que vous cherchez
Pour transmettre un fichier,
il faut passer par un site de pièce jointe tel que cjoint.com
Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
Re,
un exemple de recherche: https://www.cjoint.com/c/ELwnLszv75f
un exemple de recherche: https://www.cjoint.com/c/ELwnLszv75f
Re,
Private Sub search() Dim nb_boucle As Long, count_gene As Long Dim Dico_Data As Object, Plage As Variant, TMP, x As Long, List_Gene As String 'fige ecran Application.ScreenUpdating = False Nom_Class = ThisWorkbook.Name 'raz liste, Set Dico_Data = CreateObject("Scripting.Dictionary") 'boucle sur les onglets With Workbooks("Classeur2.xlsx").Worksheets("feuil1") derlig = .Range("A" & Rows.Count).End(xlUp).Row 'derniere cellule non vide colonne A Plage = .Range("A1:A" & derlig) 'mise en memoire 'boucle sur plage For x = 1 To UBound(Plage, 1) Dico_Data(Plage(x, 1)) = "" 'mise en memoire plage de gene colonne A Next x End With With Workbooks(Nom_Class).Worksheets("feuil2") derlig = .Range("A" & Rows.Count).End(xlUp).Row 'derniere cellule non vide colonne A Plage = .Range("A1:A" & derlig) 'mise en memoire 'boucle sur plage nb_boucle = UBound(Plage, 1) 'longueur plage For x = 1 To UBound(Plage, 1) 'boucle plage If Dico_Data.exists(Plage(x, 1)) Then 'gene indentique ?? 'ecriture liste List_Gene = List_Gene & Chr(9) & Plage(x, 1) & vbNewLine count_gene = count_gene + 1 End If Next x End With MsgBox "j'ai fait " & nb_boucle & " tours de boucle dans la feuille 2" & vbNewLine & _ "j'ai compté " & count_gene & " gènes identiques." & vbNewLine & _ "Liste genes:" & vbNewLine & List_Gene Set Dico_Data = Nothing Set Plage = Nothing End Sub
En fait je ne suis pas sure de savoir comment lui dire jusqu'à la fin de la liste, j'avais pensé que Chr(4) ou "/0" marcherait mais visiblement non ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je cherche à faire une recherche de mots identiques sur la première colonne de 2 feuilles différentes.
J'ai créé le lien suivant : http://www.cjoint.com/c/ELwkcLzrHzM
Merci pour votre aide :)
J'ai créé le lien suivant : http://www.cjoint.com/c/ELwkcLzrHzM
Merci pour votre aide :)