Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

ReBonsoir Robert,

Je suis en cours de tests et je suis embetee par "Out of Memory. Une Idee du pourquoi ?
Do not forget je debute en vba....

Merci d'avance.

A plus
 
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.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…