Test colonneA et renvoie d'une autres valeur déterminée colonneB
Résolu
bassmart
Messages postés
281
Date d'inscription
Statut
Membre
Dernière intervention
-
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
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
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
Merci de votre aide!
Voici mon code:
Et voici mon fichier: https://www.cjoint.com/?0Cnqlni41IO
Merci!
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) = fournisseurpour 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_nextpour 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:
- Test colonneA et renvoie d'une autres valeur déterminée colonneB
- Test performance pc - Guide
- Test steam deck oled - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
- Test composant pc - Guide
- Déplacer une colonne excel - Guide
1 réponse
Bonjour
Bonne journée
cdlt
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
Ça fonctionne très bien!
Peux-tu m'expliquer la ligne:
Merci encore!
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 par , mais j'ai une erreur d'exécution 5 argument ou appel de procédure incorrect.
Pourquoi?
Merci!
J'ai finalement trouvé l'erreur!
J'ai changé dans l'expression le 1 pour un 2 et dans l'expression de la fin remplacer le 2 pour un 3 et ça fonctionne!
Merci beaucoup!