Erreur incompatibilité de type

Fermé
Excel33 - 26 juin 2018 à 14:49
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 27 juin 2018 à 13:44
Bonjour,
J'essaye de lancer ma macro mais j'ai une erreur "incompatibilité de type"

Voici ma macro:
Sub test2()
With Sheets.Application
ctr = Sheet.Count - 1

.Range("AA2:AA80000").Value = WorksheetFunction.VLookup(.Range("V2:V80000").Value, Sheets(ctr).Range("W2:W80000"), 1, False)

End With
End Sub

Voilà j'essaye de faire une recherchev en prenant en compte la colonne de la feuille précédente à la feuille active.
Si quelqu'un peut m'aider.

Ps: Lorsque je mets moins de ligne, genre 1 000 au lieu de 80 000, la macro fonctionne

Merci
A voir également:

4 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
26 juin 2018 à 15:34
Bonjour,

Vous avez un Excel 2007 ou Plus??
Chez moi marche tres bien avev Excel2013
0
Bonjour,
J'ai excel 2013, ah oui ça marche avec 60 000 lignes c'est bizarre, pourquoi moi ca marche pas
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
26 juin 2018 à 15:50
Bonjour,

C'est pas normal que tu aies cette erreur, dès la ligne 3, tu devrais avoir l'erreur d’exécution 424 : Objet requis !!!

Une fois corrigée cette erreur, il y a effectivement une incompatibilité de type, en effet RechercheV sert à rechercher une valeur dans un plage de cellules mais ne permet pas de chercher un tableau de valeurs.
0
Bonjour Patrice,
moi ce que je veux c'est rechercher une valeur sur une colonne et mettre ce que je cherche dans la cellule à coté. Donc c'est bien une recherchev et c'est comme si on l’étendait après sur toute les cellules de la colonne.
Comment ça ce fait que cela marche pour un nombre limité de ligne alors.
As-tu une solution stp ?
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
26 juin 2018 à 16:19
Si tu veux chercher une valeur, pourquoi mets-tu un tableau de 79999 valeurs ? (i.e. : .Range("V2:V80000").Value)
0
parce que je veux rechercher toute les valeurs de la colonne V.
Oui c'est pas une seule valeur désolé
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié le 26 juin 2018 à 16:58
Le plus simple serait de mettre en place une formule R1C1, puis de la remplacer par ses valeurs
.Range("AA2:AA80000").FormulaR1C1 = ....
.Range("AA2:AA80000").Value =.Range("AA2:AA80000").Value
0
Merci Patrice mais là ça devient complexe pour moi, je dois le remplacer par quoi ?
La macro devient quoi du coup ?
Désolé je suis pas un expert en la matiere
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
26 juin 2018 à 17:34
Bonjour,

Ici, un excellent cours VBA pour débutants (et plus si affinités...) :
ftp://ftp-developpez.com/bidou/Cours/VBA/formationVBA.pdf

Une proposition :
Sub test()
Dim formule As String
  formule = Sheets(Sheets.Count - 1).Name
  formule = "=VLOOKUP(RC[-5],'" & formule & "'!R2C23:R80000C23,1,FALSE)"
  With ActiveSheet  'ou autre feuille à définir
    .Range("AA2:AA80000").FormulaR1C1 = formule
    .Range("AA2:AA80000").Value = .Range("AA2:AA80000").Value
  End With
End Sub


0
Super merci tu gères patrice, j'irais voir ce site j'espère qu'il aura affinité :)
J'ai pas eu le temps de tester la macro, j'essaierais demain matin merci encore. C'est le même principe qu'une recherchev et pas un simple copier coller. C'est cool faut que je maitrise cet te macro
Merci patrice
0
Re Patrice,
Super ça marche super bien, je te remercie.
J'ai deux autres question si ça te dérange pas. Est-ce qu'il y a moyen que la formule s'arrète lorsqu'on arrive à la fin ?
Et cette formule marche si on souhaite faire une recherchev sur toute la colonne comme pour ce cas là mais cette fois ci me prendre la 2ème colonnes de la plage et pas la première ?
Merci encore pour ton aide
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié le 27 juin 2018 à 13:46
Bonjour,

Voici un code qui tient compte de la taille de la base de données (colonne W de la pénultième feuille) et de la taille des informations à rechercher (colonne V de la feuille active).
Il place en colonne AA la valeur recherchée dans la colonne W et en colonne AB celle qui y correspond dans la colonne X.

Option Explicit
Sub test()
Dim formule As String
Dim dL1 As Long, dL2 As Long
  With ActiveSheet  'ou autre feuille à définir
    ' Dernière ligne de la colonne V de la feuille active
    dL1 = .Range("V" & .Rows.Count).End(xlUp).Row
    ' Nom de la pénultième feuille
    formule = Sheets(Sheets.Count - 1).Name
    ' Dernière ligne de la colonne W de la pénultième feuille
    dL2 = Worksheets(formule).Range("W" & .Rows.Count).End(xlUp).Row
    ' Formule de la colonne AA de la feuille active (1ère info)
    formule = "=VLOOKUP(RC22,'" & formule & "'!R2C23:R" & dL2 & "C24,1,FALSE)"
    .Range("AA2:AA" & dL1).FormulaR1C1 = formule
    ' Formule de la colonne AB de la feuille active (2ème info)
    formule = Replace(formule, ",1,", ",2,")
    .Range("AB2:AB" & dL1).FormulaR1C1 = formule
    ' Remplacer les formules par leur valeur
    .Range("AA2:AB" & dL1).Value = .Range("AA2:AB" & dL1).Value
  End With
End Sub


0