Incompatibilité de type

Fermé
Pommette - 22 déc. 2015 à 10:45
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 - 24 déc. 2015 à 08:23
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


6 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
22 déc. 2015 à 10:49
Bonjour,

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
1
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
22 déc. 2015 à 10:59
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...
1
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
22 déc. 2015 à 14:37
Re,

un exemple de recherche: https://www.cjoint.com/c/ELwnLszv75f
1
Re,
je ne vois pas le code ... juste le tableau excel.
Pouvez vous le mettre en clair ici ?
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709 > Pommette
22 déc. 2015 à 15:19
Re,

Ben, ouvrez la fenetre VBA par Alt+F11 !!!!!!!!!!!!!!
0
^^' merci beaucoup !
0
Re,

Seconde question si au lieu de faire la recherche d'une feuille à l'autre je veux le faire d'un fichier excel à un autre :
il suffit mettre Workbook("machin").Worksheet("feuil1") etc ...
et Workbook("trux").Worksheet("feuil1") etc ...
ou c'est plus compliqué que ça ?
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709 > Pommette
22 déc. 2015 à 16:43
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
0
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 ...
0

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 :)
0
On m'a dit que je m'embêtais pour rien (car maintenant il me dit fonction non définie ...) car il est soit disant possible de faire plus ou moins la même chose avec la fonction recherchev sur excel.
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
24 déc. 2015 à 08:23
Bonjour,

je m'embêtais pour rien C'est le point de vue de cette personne, vous n'etes pas oblige(e) de le partager

fonction recherchev sur excel. En effet, c'est une autre possibilité
0