b12n70
Messages postés5Date d'inscriptionmercredi 4 octobre 2006StatutMembreDernière intervention 5 octobre 2006
-
4 oct. 2006 à 16:48
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
5 oct. 2006 à 11:05
Bonjour à tous,
Je cherche comment localiser une valeur dans un tableau excel 2003, afin de venir écrire dans les cellules à côté.
Concrètement, ma macro est sur une facture, et quand on l'exécute, elle récupère le numéro de facture, le mode et la date de paiement, ouvre un autre classeur appelé "numérotation.xls", et (et c'est là que je plante) recherche dans la colonne K le numéro de facture, pour écrire "payé" dans la colonne L, la date en M et le mode en N.
Mon code actuel est le suivant : (désolé si le format n'y est pas, j'avoue ne pas avoir lu TOUTES les règles du forum)
Sub PayéFacture()
Dim Num As String
Dim Pay As String
Dim Dat As String
Dim Mode As String
'Récupère les informations dans la facture :
Num = Cells(19, 3).Value
Pay = Cells(60, 9).Value
Dat = Cells(60, 5).Value
Mode = Cells(60, 1).Value
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 4 oct. 2006 à 17:32
Ben, je ne comprends pas trop.
Ta formule est définie pour chercher dans la colonne M, c'est marqué en clair, il te suffit de mettre K à la place.
Ensuite, effectivement, il vaut mieux chercher une valeur plutôt qu'une formule (ça dépend comment est rentré ton n° de facture, mais je pense que çà fonctionnera mieux). Et donc, derrière, remplir tes cellules avec la valeur, et non une formule.
Au fait, quel est l'intérêt de ceci ?
ActiveCell(1, 2).Select
ActiveCell.FormulaR1C1 = Pay
ActiveCell(1, 2).Select
ActiveCell.FormulaR1C1 = Dat
ActiveCell(1, 2).Select
ActiveCell.FormulaR1C1 = Mode
Tu sélectionnes à chaque fois la même cellule, et tu remplaces 3 fois la formule, autant mettre seulement la dernière ligne.
Et vu le contenu de tes variables, il est sans doute plus indiqué de mettre :
Cells(1, 2).Value = Mode
cs_ZANUS
Messages postés126Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 février 2007 5 oct. 2006 à 09:40
Salut, il faudrait peut-être que tu affiches le code que tu utilises finalement. Je supposses que tu as utilisé l'enregistreur, non?
Tu dois avoir ça
Dim Num As String
Dim Pay As String
Dim Dat As String
Dim Mode As String
'Récupère les informations dans la facture :
Num = Cells(19, 3).Value
Pay = Cells(60, 9).Value
Dat = Cells(60, 5).Value
Mode = Cells(60, 1).Value
Workbooks.Open Filename:= _
"Chemin de ton fichier/Nom de ton fichier"
'Ouvrir tonfichier
Range("K:K").Select
Cells.Find(What:=Num, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext).Activate
'Chercher la val Num
ActiveCell(1, 2) = "Pay"
'inscrire le texte Pay dans la cellule de droite de 1
'(1,2)= même ligne (1), 2è colonne
ActiveCell(1, 3) = "Dat"
ActiveCell(1, 4) = "Mod"
Range("K1").Select
ActiveWindow.Close
End Sub
cs_ZANUS
Messages postés126Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 février 2007 5 oct. 2006 à 09:41
Salut, il faudrait peut-être que tu affiches le code que tu utilises finalement. Je supposses que tu as utilisé l'enregistreur, non?
Tu dois avoir ça
Dim Num As String
Dim Pay As String
Dim Dat As String
Dim Mode As String
'Récupère les informations dans la facture :
Num = Cells(19, 3).Value
Pay = Cells(60, 9).Value
Dat = Cells(60, 5).Value
Mode = Cells(60, 1).Value
Workbooks.Open Filename:= _
"Chemin de ton fichier/Nom de ton fichier"
'Ouvrir tonfichier
Range("K:K").Select
Cells.Find(What:=Num, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext).Activate
'Chercher la val Num
ActiveCell(1, 2) = "Pay"
'inscrire le texte Pay dans la cellule de droite de 1
'(1,2)= même ligne (1), 2è colonne
ActiveCell(1, 3) = "Dat"
ActiveCell(1, 4) = "Mod"
Range("K1").Select
ActiveWindow.Close
End Sub
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 5 oct. 2006 à 10:06
874410 b12n70 :
A ma question, à quoi sert
ActiveCell(1, 2).Select
ActiveCell.FormulaR1C1 = Pay
Je m'excuxe, je n'avais pas tilté qu'avec ActiveCell, ça se décalait.
Tellement l'habitude de faire Cells(1,2) Cells(1,3) ... quand je décale mes cellules
Sinon, je viens de réessayer chez moi, je n'arrive pas à lui faire trouver ce que je cherche dans une autre colonne que celle sélectionnée.
Si tu pouvais nous mettre le code de ta macro tel qu'il est à présent, ça serait mieux oui.