Problème rechercheV VBA excel

Résolu
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 - 28 déc. 2007 à 22:21
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 30 déc. 2007 à 21:08
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

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
30 déc. 2007 à 20:46
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.
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
30 déc. 2007 à 21:08
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.
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
28 déc. 2007 à 22:48
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²
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
30 déc. 2007 à 18:47
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
30 déc. 2007 à 21:01
merci beaucoup, ça fonctionne
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
30 déc. 2007 à 21:02
ps, y a t-il un moyen au lieu d'avoir une formule dans la colone A de l'avoir en valeur seulement?
0
Rejoignez-nous