Problème rechercheV VBA excel

Résolu
Signaler
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Bonjour à tous,

«je rencontre un petit problème avec une fonction rechercheV avec execl VBA.

Dans l'onglet Tableau cumulatif, dans la ColoneA,doit mettre le numéro de la semaine tout dépendant la date qui se trouve dans la colone B de la même ligne.

La base de donnée se trouve dans l'onglet Base de données dans la colone H ( Date 2008) et colone I (Numéro de la semaine)

Maintenant, lorsque je clique sur un bouton vb, dans la colone A, il me met la valeur FAUX quand pourtant, dans les 2 onglet, les dates ont le même format.

Voici mon script:

Private Sub CommandButton3_Click()
Dim Ligne As Long

 For K = 1 To 56000
    Ligne = (Range("A56000").End(xlUp).Row + 1)
        If Range("A" & Ligne) = vbNullString & Range("B" & Ligne) >= 0 Then            Range("A" & Ligne) Range("B" & Ligne) "=VLOOKUP(RC[1],'Base de données'!H1:J56000,2,Faux)"

    Selection.Copy
           Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
               :=False, Transpose:=False
  
 End If

Merci de vôtres aide! 

6 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Si j'ai bien compris, tu peux essayer ceci

Sub Formule()
    Dim nbLignes As Long
   
    'Nombre de lignes dans la colonne B
    nbLignes = Cells(Rows.Count, "B").End(xlUp).Row
    'Formule inscrite en colonne A
    Range("A1:A" & nbLignes).Formula = "=IF(ISERROR(VLOOKUP(B1,'Base de données'!H:I,2,FALSE)),"""",VLOOKUP(B1,'Base de données'!H:I,2,FALSE))"
End Sub

Donc, si la date en B est trouvée dans la feuille Base de données en H, il va inscrire le numéro de semaine trouvé en A

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA.
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Le plus simple (et le plus rapide, je pense) est de copier la colonne en valeur après avoir créé les formules

Sub Formule()
    Dim nbLignes As Long
   
    'Nombre de lignes dans la colonne B
    nbLignes = Cells(Rows.Count, "B").End(xlUp).Row
    'Formule inscrite en colonne A
   
Range("A1:A" & nbLignes).Formula = "=IF(ISERROR(VLOOKUP(B1,'Base de
données'!H:I,2,FALSE)),"""",VLOOKUP(B1,'Base de données'!H:I,2,FALSE))"
    Columns("A").Copy
    Columns("A").PasteSpecial xlPasteValues
    Application.CutCopyMode = False  'pour enlever la surbrillance
End Sub

Autrement, il faudrait boucler toute la colonne et y insérer la valeur trouvée par une RechercheV faite sur chaque ligne...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA.
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Ouh lala !

For K = 1 To 56000
    Ligne = (Range("A56000").End(xlUp).Row + 1)
        If Range("A" & Ligne) = vbNullString & Range("B" & Ligne) >= 0
Comme tu mets la formule de "Ligne = ..." à l'intérieur de ta boucle, Ligne sera toujours égal à la même chose...
Range("A" & Ligne) Range("B" & Ligne) "=VLOOKUP(RC[1],'Base de données'!H1:J56000,2,Faux)"
Ici, tu ne peux pas mettre deux "=" dans une même ligne de code. En C, tu pourrais (sauf si c'est illogique), mais pas en VB.

Finalement
Selection.Copy
Ici, rien n'est sélectionné... donc rien ne devrait être copié sauf la cellule active au moment de l'appel...

Inscris la formule telle que tu l'écrirais dans la barre de formule d'Excel et où tu voudrais la mettre (en A ou en B ?)

MPi²
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
Merci pour ton aide.

Voici comment jr l'aurais inscrit dans la celule de la colone A

=RECHERCHEV(B7;'Base de données'!H:I;2;0)

Mais je ne veux pas qu'il prenne toujout la valeur de B7.
Si je rajoute une donné dison à la ligne 27, il fera une rechercheV selon la donnée qui se trouve dans B27.
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
merci beaucoup, ça fonctionne
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
ps, y a t-il un moyen au lieu d'avoir une formule dans la colone A de l'avoir en valeur seulement?