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 !
Bonsoir à tous, j'ai un problème avec mon code ci-dessous. Je souhaite dans un premier temps insérer une colonne en E puis y constituer ma valeur et ensuite effectuer un Worksheet_Change(ByVal Target As Range). Mais ça ne fonctionne pas et je ne suis pas certain que ça puisse marcher avec la boucle qu'il y a à l'intérieur du code.
Merci de votre aide.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
Dim plage As Range
Dim R As Range
Worksheets("Body").Columns("E:E").Insert Shift:=xlToRight
Cells(1, 5) = "PO-Item-ASN"
Nb = Range([D2], [D65536].End(xlUp)).Rows.Count
For i = 2 To Nb + 1
Valeur = Split(Cells(i, 4).Text, "/")
Cells(i, 5).Value = Valeur(0) & "-" & Cells(i, 23).Value & "-" & Cells(i, 33).Value
With workbooks("5-17.csv").Sheets("5-17") 'prend en compte le classeur 5-17 feuille 5-17
Set plage = .Range("H2:H" & .Range("H65536").End(xlUp).Row) 'définit la plage de recherche
End With 'fin de la prise en compte du classeur et la feuille 5-17
Set R = pl.Find(Target.Value, , xlValues, xlWhole) 'définit la recherche
Target.Offset(0, 11).Value = R.Offset(0, 16).Value
Next i
End Sub
Re : Problème avec Worksheet_Change(ByVal Target As Range)
Bonsoir Arpette
Une chose est certaine :
Code:
[COLOR="DarkSlateGray"][B] Set R = pl.Find(Target.Value, , xlValues, xlWhole)[/B][/COLOR]
ne peut fonctionner en l'état. La méthode Find requiert un "qualificateur d'objet" bien défini. Or, pl désigne un "Variant" vide dans votre procédure et ne qualifie pas une plage de cellules. Donc vous ne pouvez lui appliquer la méthode Find.
Pour le reste, il faudrait en savoir un peu plus sur les objets auxquels s'appliquent cette procédure et sur ce qu'elle est censée faire. En l'état, c'est assez difficile à deviner...
Déposer un classeur avec un minimum de données serait sans doute une bonne idée.
ROGER2327 #4336
Vendredi 13 Haha 138 (Saint et Sainte Fenouillard, Sainte famille, SQ) 27 Vendémiaire An CCXIX 2010-W42-1T20:01:45Z
Petit rappel : on ne sait rien de ton fichier et de ta demande, hormis ce qui est dans les postes. Ce qui est évident, ne l'est que pour celui qui travaille avec le fichier, pas pour ceux qui pourraient envisager de te dépanner.
Juste quelques remarques anodines :
- Tu déclares certaines variables. Pourquoi pas toutes (pl, valeur) ?
- Tu utilises
Comme tu utilises une macro à lancement automatique, j'espère que celle-ci n'est pas sur le module lié à la feuille "Body", sous peine d'une boucle infinie.
Code:
Nb = Range([D2], [D65536].End(xlUp)).Rows.Count
For i = 2 To Nb + 1
Ça me semble complexifier ton code pour rien. Pourquoi pas simplement
Code:
For i = 2 To Cells(rows.Count,"D").End(xlUp)).Row
Ou un code similaire ?
-Le but des indentation n'est pas de rendre le code plus "joli", mais de permettre de le rendre plus lisible.
A+
[FONT="]
[/FONT]
Salut Arpette et le forum
Si on doit interpréter ce que tu demandes, ce sera forcement d'une manière qui n'est pas la bonne (Loi de Murphy).Avec une telle précision, on peut aider !
Petit rappel : on ne sait rien de ton fichier et de ta demande, hormis ce qui est dans les postes. Ce qui est évident, ne l'est que pour celui qui travaille avec le fichier, pas pour ceux qui pourraient envisager de te dépanner.
Juste quelques remarques anodines :
- Tu déclares certaines variables. Pourquoi pas toutes (pl, valeur) ?
- Tu utilises
Comme tu utilises une macro à lancement automatique, j'espère que celle-ci n'est pas sur le module lié à la feuille "Body", sous peine d'une boucle infinie.
Code:
Nb = Range([D2], [D65536].End(xlUp)).Rows.Count
For i = 2 To Nb + 1
Ça me semble complexifier ton code pour rien. Pourquoi pas simplement
Code:
For i = 2 To Cells(rows.Count,"D").End(xlUp)).Row
Ou un code similaire ?
-Le but des indentation n'est pas de rendre le code plus "joli", mais de permettre de le rendre plus lisible.
A+
[FONT="]
[/FONT]
Bonsoir Roger, bonsoir Gorfaël, ci-joint mes deux fichiers qui représente se que je souhaite. Donc j'ai un fichier Test1 dans lequel j'insere une colonne et où je créé ma valeur. Une fois cette valeur créée, je souhaite faire une recherche sur le second fichier Test2 et renvoyer la quantité. Mon code est dans le classeur Test1 feuille Test1.
Merci pour votre aide.
Bonsoir Roger, bonsoir Gorfaël, ci-joint mes deux fichiers qui représente se que je souhaite. Donc j'ai un fichier Test1 dans lequel j'insere une colonne et où je créé ma valeur. Une fois cette valeur créée, je souhaite faire une recherche sur le second fichier Test2 et renvoyer la quantité. Mon code est dans le classeur Test1 feuille Test1.
Merci pour votre aide.
Rebonsoir à vous, avec vos recommandations, j'ai modifié mon code ça me semble plus simple et ça marche. Si vous voyez plus simple ou des erreurs d'écriture, n'hésitez pas.
Merci pour votre aide.
Code:
Sub Test()
Dim i As Long
Dim v As Variant
Worksheets("Test1").Columns("C:C").Insert Shift:=xlToRight
Cells(1, 3) = "Cde-Article-Fichier" 'insertion d'une colonne pour constituer ma valeur
Nb = Range([B2], [B65536].End(xlUp)).Rows.Count
For i = 2 To Nb + 1
Valeur = Split(Cells(i, 2).Text, "/") 'split à /
Cells(i, 3).Value = Valeur(0) & "-" & Cells(i, 4).Value & "-" & Cells(i, 5).Value
'constitution de ma valeur
Cells(i, 6) = Application.VLookup(Cells(i, 3).Value, Workbooks("Test2.xls").Sheets("Test2").Range("D2:E65536"), 2, False) 'définit la recherche
v = Application.VLookup(Cells(i, 3).Value, Workbooks("Test2.xls").Sheets("Test2").Range("D2:E65536"), 2, False)
Cells(i, 6) = IIf(IsError(v), "0", v)
Next i
End Sub
- 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