Déplacement de valeurs dans des cellules
Résolu
Barahaoua
-
Arkana0 Messages postés 6902 Statut Modérateur -
Arkana0 Messages postés 6902 Statut Modérateur -
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
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:
- Déplacement de valeurs dans des cellules
- Verrouiller des cellules excel - Guide
- Mes deplacement - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Déplacer une colonne dans excel - Guide
- Cette valeur ne correspond pas aux restrictions de validation des données pour cette cellule ✓ - Forum Excel
2 réponses
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
y : la colonne considérée
[...] correspondant au code que tu souhaites exécuter dans la structure "if"
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"
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
https://www.cjoint.com/c/FFBkd0sj26h
merci
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
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à :
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.
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.