Déplacement de valeurs dans des cellules

Résolu/Fermé
Barahaoua - 27 juin 2016 à 11:22
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 - 27 juin 2016 à 15:12
Bonjour SVP j'ai besoin de votre aide :

j'ai fait une macro qui me gére le passages des chaines de caractére placer dans la colonne A mais malheuresement pas comme il faut :

en faite moi j'ai la ligne 7 ce remplie automatique la cellule M15 prend la valeur 53 et aprés 1 seconde elle l'envois a M15 et M14 recois de nouveau 53 et aisi de suite jusqu' la cellule T7

ce que je veux maintenant c'est que lorsque M14 est différente du vide que O7 recois A7 et quand M15 est differente du vide P7 recois A7 et O7 recois A8 et aisi de suite jusqua trouver une cellule vide dans la colonne A puis s'arréter

VOILA LE CODE QUE j'ai ecris mais il fonctionne pas bien

merci
A voir également:

2 réponses

Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181
27 juin 2016 à 11:55
Bonjour,

1) Ton code n'apparaît pas dans ton message
2) Je ne sais pas pour les autres mais j'ai énormément de mal à te comprendre. Ton pseudo suggère que tu n'est peut-être pas français, auquel cas tu peux peut-être t'exprimer en anglais si tu maîtrises mieux. Sinon prends ton temps et fait un effort d'expression et de clarté.

Je vais maintenant te répondre avec ce que je pense avoir compris...
Je comprends que ta difficulté est de savoir si la cellule en ligne 7 sur la colonne qui t'intéresse est vide.
Pour cela tu peux utiliser le test
if Cells(7,y).Value = "" then [...] end if

y : la colonne considérée
[...] correspondant au code que tu souhaites exécuter dans la structure "if"
0
Barahaoua Messages postés 88 Date d'inscription jeudi 19 mai 2016 Statut Membre Dernière intervention 17 août 2016
Modifié par Barahaoua le 27/06/2016 à 12:05
merci pour ta réponse
mais malheureusement c'est pas ce ce que je veux
voila le code que j'ai écris pour cette parti mais il fonctionne pas bien
essey stp de démarer le fichier en cliquant sur le boutons simulation pour voir le fonctionnement

Sub EntreePasses()
Dim j As Long
Dim TUN1(2, 6) As String
Dim m As String
For j = 0 To 4
If Range("O7") <> "" Then Cells(8, 20 - j) = Cells(8, 19 - j).Value
If Range("P7") <> "" Then Cells(8, 19 - j) = Cells(8, 18 - j).Value
If Range("Q7") <> "" Then Cells(8, 18 - j) = Cells(8, 17 - j).Value
If Range("R7") <> "" Then Cells(8, 17 - j) = Cells(8, 16 - j).Value
If Range("S7") <> "" Then Cells(8, 16 - j) = Cells(8, 15 - j).Value
If Range("T7") <> "" Then Cells(8, 15 - j) = Cells(8, 14 - j).Value
j = j + 1
Next j
Cells(8, 15) = Range("B5").Value
End Sub



https://www.cjoint.com/c/FFBkd0sj26h

merci
0
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181
27 juin 2016 à 14:31
Donc si j'ai compris....
Dans un premier temps la cellule O8 prend la valeur renseignée en A6.
Ensuite P8 prend la valeur de O8
Suite à cela, O8 prend la valeur en A7, Q8 prend la valeur de P8, qui prend la nouvelle valeur de O8, qui va prendre la valeur en A8, et ainsi de suite, jusqu'à ce qu'il n'y ait plus de valeur renseignées dans la colonne A ?

Si tel est le cas, tu t'es emmêlé les pinceaux dans ton code. et il aurait plutôt cette allure-là :
Sub EntreePasses()
Dim j As Long
Dim TUN1(2, 6) As String
Dim m As String
For j = 0 To 4
If Range("S7") <> "" Then Cells(7, 20) = Cells(7, 19).Value
If Range("R7") <> "" Then Cells(7, 19) = Cells(7, 18).Value
If Range("Q7") <> "" Then Cells(7, 18) = Cells(7, 17).Value
If Range("P7") <> "" Then Cells(7, 17) = Cells(7, 16).Value
If Range("O7") <> "" Then Cells(7, 16) = Cells(7, 15).Value
If Range("A" & 6 + j) <> "" Then Cells(7, 15) = Cells(6 + j, 1).Value
Next j
Cells(8, 15) = Range("B5").Value
End Sub


Les corrections apportées :
- J'ai supposé que les tests signifiaient que tu vérifiais si la cellule précédente était remplie et que si tel était le cas, tu prenais sa valeur. Il faut donc modifier l'ordre de tes test, ainsi que les lignes concernées. (ici ligne 7)
- Dans ton code la cellule T7 prenait la valeur de S7, puis de R7, etc. Ce qui créait un décalage. Elle n'a besoin de prendre que la valeur en S7 à chaque tour. Idem pour chaque colonne.
- Ta colonne O va chercher ses valeurs en A6 à Ax, Tu dois donc aller regarder la ligne A6+j à chaque tour
- Ton j s'incrémentait deux fois : une fois avec j = j+1, puis avec "next j". Pour coller à ce que tu décrivais, tu auras effcectivement besoin de la ligne j = j+1, mais pas dans une boucle qui fait elle-même varier j.
0
Barahaoua Messages postés 88 Date d'inscription jeudi 19 mai 2016 Statut Membre Dernière intervention 17 août 2016
27 juin 2016 à 15:01
c'est bon merci j'ai trouver la solution merci beaucoup pour l'aide
0
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181 > Barahaoua Messages postés 88 Date d'inscription jeudi 19 mai 2016 Statut Membre Dernière intervention 17 août 2016
27 juin 2016 à 15:12
Dans ce cas, tu peux cliquer sur le bouton "résolu" en haut à gauche :)
0