Incompatibilité de type

Pommette -  
f894009 Messages postés 17417 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

6 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    un exemple de recherche: https://www.cjoint.com/c/ELwnLszv75f
    1
    1. Pommette
       
      Re,
      je ne vois pas le code ... juste le tableau excel.
      Pouvez vous le mettre en clair ici ?
      0
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Pommette
         
        Re,

        Ben, ouvrez la fenetre VBA par Alt+F11 !!!!!!!!!!!!!!
        0
    2. Pommette
       
      ^^' merci beaucoup !
      0
    3. Pommette
       
      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
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Pommette
         
        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
  4. Pommette
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Pommette
     
    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
  7. Pommette
     
    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
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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