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!