Test colonneA et renvoie d'une autres valeur déterminée colonneB

Résolu/Fermé
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - Modifié par bassmart le 13/03/2015 à 16:02
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 16 mars 2015 à 14:18
Bonjour à tous,

J'ai créer une macro qui cherche des valeurs spécifique dans une chaîne de valeurs (ex: F35001R-012-12) dans la colonne A et je veux qu'à chaque valeur trouvé qui se trouve au centre (ex: -012-), il envoie le nom de mon fournisseur dans la colonne B et sur la même ligne de chacune des valeurs trouvées.

J'ai passé quelques espion sur ma macro et tout fonctionne! J'ai aussi fait un test avec une ligne
ActiveCell.Offset(0, 1) = fournisseur
pour voir s'il me renvoyais le bon nom de fournisseur, le test est positif.

Il me reste juste à envoyer dans la colonne B et sur chacune des lignes correspondantes. Mais je n'y arrive pas!

J'ai pense que ça doit être réalisé avec la fonction
For each_next
pour faire ce que je veux, mais je suis pas certain.

Merci de votre aide!

Voici mon code:
Option Explicit
Sub fournisseur()

Dim dlig As Long
Dim colA As Range, colB As Range, trouve As Range
Dim firstAddr As String, fournisseur As String
Dim numéro As String
Dim r As Range
Dim i As Long

With ActiveSheet
dlig = Range("A8").End(xlDown).Row
Set colA = Range("A8:a" & dlig)
Set colB = Range("b8:b" & dlig)
End With

For i = 1 To 14
    On Error Resume Next
    On Error GoTo 0
    Select Case i

    Case 1
        numéro = "-000-"
        fournisseur = "Fourn1"
    Case 2
        numéro = "-001-"
        fournisseur = "Fourn2"
    Case 3
        numéro = "-002-"
        fournisseur = "Fourn3"
    Case 4
        numéro = "-003-"
        fournisseur = "Fourn4"
    Case 5
        numéro = "-004-"
        fournisseur = "Fourn5"
    Case 6
        numéro = "-005-"
        fournisseur = "Fourn6"
    Case 7
        numéro = "-006-"
        fournisseur = "Fourn7"
    Case 8
        numéro = "-007-"
        fournisseur = "Fourn8"
    Case 9
        numéro = "-008-"
        fournisseur = "Fourn9"
    Case 10
        numéro = "-009-"
        fournisseur = "Fourn10"
    Case 11
        numéro = "-010-"
        fournisseur = "Fourn11"
    Case 12
        numéro = "-011-"
        fournisseur = "Fourn12"
    Case 13
        numéro = "-012-"
        fournisseur = "Fourn13"
    Case 14
        numéro = "-013-"
        fournisseur = "Fourn14"
    End Select


Set trouve = colA.Find(what:=numéro, lookat:=xlPart, searchorder:=xlByColumns, searchdirection:=xlNext)



If Not trouve Is Nothing Then
    firstAddr = trouve.Address
End If

    Do Until trouve Is Nothing
    Debug.Print trouve.Address
    Set trouve = Range("a8:a" & dlig).FindNext(after:=trouve)
        If trouve.Address = firstAddr Then
            Exit Do
        End If
    Loop
    
For Each trouve In colA
    
    ActiveCell.Offset(0, 1) = fournisseur
    
Next
      
    
    
Next i
    
End Sub


Et voici mon fichier: https://www.cjoint.com/?0Cnqlni41IO

Merci!

A voir également:

1 réponse

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
14 mars 2015 à 05:58
Bonjour
Sub fournisseur()
    Dim fournisseur As String
    Dim numéro As String
    Dim i As Long
    For i = 8 To [A8].End(xlDown).Row
        On Error Resume Next
        On Error GoTo 0
        numéro = Mid(Cells(i, 1), InStr(1, Cells(i, 1), "-", 1), 5)
        If numéro = "-000-" Then
              fournisseur = "Fourn1"
        ElseIf numéro = "-001-" Then
              fournisseur = "Fourn2"
        ElseIf numéro = "-002-" Then
              fournisseur = "Fourn3"
        ElseIf numéro = "-003-" Then
              fournisseur = "Fourn4"
        ElseIf numéro = "-004-" Then
              fournisseur = "Fourn5"
        ElseIf numéro = "-005-" Then
              fournisseur = "Fourn6"
        ElseIf numéro = "-006-" Then
              fournisseur = "Fourn7"
        ElseIf numéro = "-007-" Then
              fournisseur = "Fourn8"
        ElseIf numéro = "-008-" Then
              fournisseur = "Fourn9"
        ElseIf numéro = "-009-" Then
              fournisseur = "Fourn10"
        ElseIf numéro = "-010-" Then
              fournisseur = "Fourn11"
        ElseIf numéro = "-011-" Then
              fournisseur = "Fourn12"
        ElseIf numéro = "-012-" Then
              fournisseur = "Fourn13"
        ElseIf numéro = "-013-" Then
              fournisseur = "Fourn14"
        End If
        Cells(i, 2) = fournisseur
    Next i
End Sub

Bonne journée
cdlt
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
16 mars 2015 à 12:55
Merci beaucoup Frenchie83!

Ça fonctionne très bien!

Peux-tu m'expliquer la ligne:
numéro = Mid(Cells(i, 1), InStr(1, Cells(i, 1), "-", 1), 5)


Merci encore!
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1 > bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023
Modifié par bassmart le 16/03/2015 à 13:17
Petit problème!

J'ai appliquer cette macro sur une 2 autres feuilles, ça marche bien pour une des 2 feuilles, mais pas pour l'autre!

En fait, j'ai copié la macro, j'ai fait les changements dans la macro et j'ai changer le nom 2ième macro.

La seule différence, c'est que ma première colonne est la colonne B. J'ai donc remplacé le
[A8]
par
[B8]
, mais j'ai une erreur d'exécution 5 argument ou appel de procédure incorrect.

Pourquoi?
Merci!
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1 > bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023
Modifié par bassmart le 16/03/2015 à 14:18
Bon!

J'ai finalement trouvé l'erreur!

J'ai changé dans l'expression
Cells(i, 1), 
le 1 pour un 2 et dans l'expression de la fin
Cells(i, 2) = fournisseur
remplacer le 2 pour un 3 et ça fonctionne!

Merci beaucoup!
0