Incompatibilité de type

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

  • Votes
  • Date
  • Date décroissante
  1. 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. 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 ...
      1. 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. 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 :)
          1. 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 ?
            2. @PommetteRe,

              Ben, ouvrez la fenetre VBA par Alt+F11 !!!!!!!!!!!!!!
            3. ^^' merci beaucoup !
            4. 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 ?
            5. @PommetteRe,

              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
              
          2. 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.
            1. 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é