utilisation cells.value - VB/VBA/VBS - Programmation
Marsh Posté le 20-07-2012 à 07:51:32
Bonjour,
je ne comprends les tests que tu veux faire
Mais dans un premier temps, si tu veux affecter une valeur à une variable, tu le fais à l'envers.
Il ne faut pas faire valeur = variable mais variable = valeur et pour cells(), il faut mettre le N° de la colonne et non la lettre
Code :
|
Ensuite, le fait de sélectionner, copier puis coller fait perdre énormément de temps :
Code :
|
à remplacer par :
Code :
|
Marsh Posté le 20-07-2012 à 08:04:29
Je crois que je viens de comprendre ce que tu veux faire
Donc si en C8 tu as 3, tu veux aller chercher la 3ième ligne
j'ai fait commencé la boucle à la ligne 5, sinon ça va écraser les données du début de tableau
Code :
|
Et pour la boucle, la macro va aller jusqu'à la ligne 50000 même s'il n'y a des données que sur 100 lignes.
Tu peux trouver la dernière ligne en faisant comme ça :
Code :
|
ou par exemple
Code :
|
Marsh Posté le 20-07-2012 à 22:24:03
Bonsoir oovaveoo,
merci beaucoup pour ta réactivité et tes conseils , je teste ça dans le weekend et te dit ce qu'il en est
Marsh Posté le 23-07-2012 à 08:05:57
Effectivement, j'ai recopié une partie de ton code et je ne l'ai pas corrigé
Faut mettre
dim k as string au lieu de long (long étant un nombre)
et k = cells(i, 3).value
Marsh Posté le 25-07-2012 à 17:53:56
salut
j'ai pas eu le temps de passer plus tôt sur le forum
j'ai modifié comme tu me l'as suggéré k en string
cela fonctionne mais la fin de macro déraille sur[spoiler][/spoiler] Cells(i, 4) = cells(k, 2)[spoiler][/spoiler]
en bidouillant une macro d'un de mes prédécesseurs et en nommant mes colonnes j'ai obtenu ce que je voulais
la colonne CAV correspond à la colonne A
la colonne ConversionNOI correspond à la colonne B
la colonne ConversionPosition correspond à la colonne C
la colonne app correspond à la colonne D
Dim i As Long
Dim k As Integer
Cells(Range("B1000000" ).Row, Range("ConversionNOI" ).Column).Select
Selection.End(xlUp).Select
NbLignes = ActiveCell.Row
For i = 2 To NbLignes
k = Cells(i, Range("ConversionPosition" ).Column).Value
Cells(k, Range("cav" ).Column).Select
Selection.Copy
Cells(i, Range("app" ).Column).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next i
End Sub
je vais quand même essayer de trouver la solution sur le premier code
en tout cas merci beaucoup pour ton aide
Marsh Posté le 19-07-2012 à 19:35:11
Bonjour,
j'ai recherché sur le forum un sujet proche du mien mais rien ne s'y rapporte,
je voudrais récupérer la valeur d'une cellule de la colonne A pour la coller dans la colonne D en fonction de la valeur dans chacune des cellules de la colonne C,
par exemple si pour la cellule C8 la valeur est 3 je voudrais qu'apparaisse en D8 le texte "jaune" correspondant à la cellule A3, pour C9 la valeur est 4 en D9 apparaîtrait "vert" correspondant à A4
A B C D
1 rouge A 2
2 bleu B 2
3 jaune C 2
4 vert D 2
j'ai tenté ça mais j'ai un problème pour définir cells.value comme variable de k
Sub Ident()
'
' Ident Macro
'
Dim i As Long
' i variable de ligne de la colonne C
Dim k As Long
' k valeur de la cellule C pour chaque ligne
For i = 2 To 50000
Cells.Value(i, C) = k (erreur de compilation: nombre d'arguments incorrect ou affectation de propriété incorrecte)
Range(k, A).Select
Selection.Copy
Cells(i, D).Select
Selection.Paste
Next i
'
End Sub
Message édité par toywaha le 19-07-2012 à 19:51:54