Bonsoir a tous, j'ai farfouiller un peu sur le forum, une vrai mine d'or d'information
j'ai trouver et modifier un peu un code pour ce que je voulais faire, il fonctionne mais comme je suis très novice en vba j'aurai voulu savoir si il y avait possibilité de rendre le code plus léger, car j'ai l'impression qui fait une recherche sur toute la feuille.
c'est très basique j'ai dans la colonne B ( de B7 a B54) des nombres et quand je supprime le nombre est que la cellule devient vide, j'aimerais qu'il vide les cellules H, J et L situé sur la même ligne. Les ligne de mon tableau seront toujours comprise entre la ligne 7 et 54 est je pense que mon code lui analyse la totalité de la feuille est on sent une petite latence.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim J As Long
For J = 7 To Range("B" & Rows.Count).End(xlUp).Row
If UCase(Range("B" & J)) = "" Then
Range("L" & J & ",H" & J & ",J" & J).ClearContents
End If
Next J
End Sub
Et avec celle-ci ?
NB: au préalable, il faut supprimer la macro Selection_Change()
VB:
Private Sub Worksheet_Change(ByVal T As Range)
If Not Intersect(T, Range("B7:B54")) Is Nothing Then
If IsEmpty(T) Then
Union(T.Offset(, 6), T.Offset(, 8), T.Offset(, 10)) = ""
Else
Exit Sub
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B7:B54")) Is Nothing Then
If Len(Target) Then
Target = ""
Cells(Target.Row, "H") = ""
Cells(Target.Row, "J") = ""
Cells(Target.Row, "L") = ""
End If
End If
End Sub
Cela produit-il l'effet escompté ?
Ey si oui, constates des effets négatifs annexes?
Private Sub Worksheet_SelectionChange(ByVal T As Range)
If Not Intersect(T, Range("B7:B54")) Is Nothing Then
If Len(T) Then
Union(T, T.Offset(, 6), T.Offset(, 8), T.Offset(, 10)) = ""
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B7:B54")) Is Nothing Then
If Len(Target) Then
Target = ""
Cells(Target.Row, "H") = ""
Cells(Target.Row, "J") = ""
Cells(Target.Row, "L") = ""
End If
End If
End Sub
Cela produit-il l'effet escompté ?
Ey si oui, constates des effets négatifs annexes?
merci beaucoup c'est beaucoup plus réactif, seul petit soucis c'est que quand je sélectionne la cellule ou y a le nombre que j'aimerais enlever la cellule s'efface directement avant même que je vide manuellement la cellule
Tu veux effacer le contenu de la cellule que tu sélectionnes, non ?
C'est ce que le code VBA proposé
(en effaçant en même temps les cellules H, J, L de la même ligne
Une version encore plus courte et radicale
VB:
Private Sub Worksheet_SelectionChange(ByVal T As Range)
If Not Intersect(T, Range("B7:B54")) Is Nothing Then
Union(T, T.Offset(, 6), T.Offset(, 8), T.Offset(, 10)) = ""
End If
End Sub
Tu veux effacer le contenu de la cellule que tu sélectionnes, non ?
C'est ce que le code VBA proposé
(en effaçant en même temps les cellules H, J, L de la même ligne
Une version encore plus courte et radicale
VB:
Private Sub Worksheet_SelectionChange(ByVal T As Range)
If Not Intersect(T, Range("B7:B54")) Is Nothing Then
Union(T, T.Offset(, 6), T.Offset(, 8), T.Offset(, 10)) = ""
End If
End Sub
pardon je me suis peut être mal exprimer, je souhaiterais que les cellule H, J, L s'efface une fois que j'ai vider la cellule B manuellement, sinon la c'est trop radical quand même
Et avec celle-ci ?
NB: au préalable, il faut supprimer la macro Selection_Change()
VB:
Private Sub Worksheet_Change(ByVal T As Range)
If Not Intersect(T, Range("B7:B54")) Is Nothing Then
If IsEmpty(T) Then
Union(T.Offset(, 6), T.Offset(, 8), T.Offset(, 10)) = ""
Else
Exit Sub
End If
End If
End Sub
Et avec celle-ci ?
NB: au préalable, il faut supprimer la macro Selection_Change()
VB:
Private Sub Worksheet_Change(ByVal T As Range)
If Not Intersect(T, Range("B7:B54")) Is Nothing Then
If IsEmpty(T) Then
Union(T.Offset(, 6), T.Offset(, 8), T.Offset(, 10)) = ""
Else
Exit Sub
End If
End If
End Sub
Et il se passe quoi si tu sélectionnes plusieurs cellules de la colonne B ?
Si tu supprimes la colonne B
Si tu fais un copier/coller dans la colonne B
etc...
Est ce que tu serais par hasard également me coder un petit truc qui sûrement sera facile pour toi. j’ai une base de donnée avec plein de devis sur chaque ligne j’ai le numéro de devis en colonne À et ensuite j’ai l’adresse, le nom de la personne et le montant et j’ai une une cellule qui s’appel en cours en cellule D et quand un devis et adjugé j’écris manuellement « validé » et si il est refusé j’écris « refuser » manuellement très basique. Mais je dois chaque fois aller rechercher le devis en question parmi plein d’autre et j’aimerais automatiser ça
J’aimerais créer une macro toute simple avec un bouton
Exemple j’écris le numéro du devis dans une cellule et à côté, j’aurai le bouton, je clique sur le bouton et il m’écrit automatiquement validé dans la bonne cellule en fonction du numéro de devis taper préalablement et je recommence avec un autre devis
Et si il est refusé j’aurai le même bouton mais qui écrit refusé
Il faudrai d’après ce que j’ai pu lire que je puisse mettre une sorte de fonctions de recherchv qui va chercher le numéro du devis pour ensuite coller le mot « validé » dans la bonne cellule en tant que valeur fixe. Mais je suis nul en vba malheureusement est ce que tu pourrait m’aider
Et il se passe quoi si tu sélectionnes plusieurs cellules de la colonne B ?
Si tu supprimes la colonne B
Si tu fais un copier/coller dans la colonne B
etc...
alors si je supprime la colonne B, il ne se passe rien ça n'efface pas les autre ligne
si je fais un copier coller d'une cellule ou de plusieurs, c'est ok par contre si je sélectionne plusieurs cellule B en même temps et que je vide les cellule la par contre, ça ne vide pas les autre cellule, mais je ne vais jamais vider plusieurs cellule en même temps donc pour moi ton code et vraiment tir top a mon usage
2.3 – Le titre de la question doit être clair et comporter explicitement le sujet de la demande. Cela sous-entend qu’une nouvelle demande fait l’objet d’un nouveau fil.