If + counta + vlookup

  • Initiateur de la discussion Initiateur de la discussion Poor Frog
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

Poor Frog

Guest
Hi,

I have been working on it since a long time!!!!! 😡

J'ai cree un tableau qui se remplit grace a un Userform. (Sample VBA Data en attached tres light sans la macro)

My problem is : je voudrais ecrire en VBA la procedure suivante :

If (COUNTA(Work_Data! cell F to I) <> 1 Then
Active cell (N) = 00
Else
(COUNTA(Work_Data! cell F to I) = 1 Then
Active cell (N) = VLOOKUP(Work_Data! cell F to I, Ref_Data!M2:N5,2,False)

Il faudrait que cela soit repetable a chaque nouvelle ligne entrée.

Thank you so much for votre aide.
 

Pièces jointes

Re : If + counta + vlookup

Bonsoir Poor Frog et bienvenue, bonsoir le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim t As String 'déclare la variable t (Texte)

With Sheets("WORK_DATA") 'prend en compte l'onglet "WORK_DATA"
    dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A)
    Set pl = .Range("N2:N" & dl) 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "WORK_DATA"
For Each cel In pl 'boucle sur toutes les cellule cel de la plage pl
    'condition : si le nombre de valeurs dans les colonnes F à I est diffrent de 1 (ou si plus d'un seul intrument)
    If Application.WorksheetFunction.CountA(cel.Offset(0, -8).Resize(1, 4)) <> 1 Then
        cel.Value = 0 'place la valeur zéro dans la cellule cel
    Else 'sinon (condition)
        t = cel.Offset(0, -8).Resize(1, 4).SpecialCells(xlCellTypeConstants).Value 'définit le texte t
        'place dans la cellule cel la valeur, décalé du'une colonne à droite, de la recherche, en colonne M, du texte t en entier
        cel.Value = Sheets("REF_DATA").Columns(13).Find(t, , xlValues, xlWhole).Offset(0, 1)
    End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
End Sub

Dans l'onglet REF_DATA en cellule M2, j'ai remplacé VIOLON par VIOLIN sinon ça plantait...
 
Re : If + counta + vlookup

Bonsoir Poor Frog, bonsoir le forum,

Maybe :
Dim dl As Long à la place de Dim dl As Integer.
But not sure Œuf Corse (comme disent les poules à Ajaccio)... Do not forget, my Taylor is full of flouze but my english is verry poor, Frog...
 
Re : If + counta + vlookup

Well done pour les oeufs! 😉

J'ai change en As Long mais toujours out of memory

Par ailleurs lors de CountA <> 1 tout est perfect
Mais pour la premiere ligne de counta = 1 il ne me prend pas la ref il me met 0. Pour les suivantes tout est OK.

Nice Dreams.
 
Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour