Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

améliorer un code vba

5 réponses
Avatar
totontitus
Bonjour,

Lorsque je clic dans une liste déroulante de la colonne B les cellules adjacentes se vide, jusqu’à ici c'est bon, le but est de remettre à zéro les cellules!
Par contre, comme c'est un tableau structuré et lorsque je rajoute un mot par le biais de la liste déroulante en B10,B11,B12, etc, le code VBA ne suit pas l'extension du tableau, du coup je voulais savoir s'il est possible de modifier mon code de façon qu'à chaque ajout d'un mot en colonne B, mon code VBA prends en compte la ligne rajouté sinon je suis obligé de le faire manuellement en rajoutant quelques ligne de code

lien du fichier

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


Merci

Cordialement

5 réponses

Avatar
MichD
Bonjour,
Essaie ceci :
Dans le module de la feuil1
'----------------------------
Private Sub worksheet_selectionchange(ByVal target As Range)
Dim X As Range
Set X = ListObjects("Tableau1").Range.Columns(1)
If Not Intersect(target, X) Is Nothing Then
target.Offset(, 1) = ""
End If
End Sub
'----------------------------
MichD
Avatar
MichD
Une petite correction, tu veux vider les 2 colonnes
'----------------------------
Private Sub worksheet_selectionchange(ByVal Target As Range)
Dim X As Range
Set X = ListObjects("Tableau1").Range.Columns(1)
If Not Intersect(Target, X) Is Nothing Then
Application.EnableEvents = False
Target.Offset(, 1).Resize(, 2).ClearContents
Application.EnableEvents = True
End If
End Sub
'----------------------------
MichD
Avatar
totontitus
Le jeudi 28 Janvier 2021 à 22:26 par totontitus :
Bonjour,
Lorsque je clic dans une liste déroulante de la colonne B les cellules
adjacentes se vide, jusqu’à ici c'est bon, le but est de remettre
à zéro les cellules!
Par contre, comme c'est un tableau structuré et lorsque je rajoute un
mot par le biais de la liste déroulante en B10,B11,B12, etc, le code VBA
ne suit pas l'extension du tableau, du coup je voulais savoir s'il est possible
de modifier mon code de façon qu'à chaque ajout d'un mot en
colonne B, mon code VBA prends en compte la ligne rajouté sinon je suis
obligé de le faire manuellement en rajoutant quelques ligne de code
lien du fichier
https://www.cjoint.com/c/KACvsKKuuXj
Merci
Cordialement
Bonjour, MichD
Impeccable, comme d'habitude vous m'avez donné la bonne solution, merci beaucoup de votre contribution
Merci
Cordialement
Avatar
Michel__D
Bonjour,
Le 14/06/2021 Í  22:55, totontitus a écrit :
Bonjour,
Serait-il possible avec ce code ci-joint de copier aussi les formules
puisque dans l'actuel les formules ne sont pas copier
Sub CopyValuesAndNumberFormats()
Dim CopyRng As Range, PasteRng As Range
xTitleId = "KutoolsforExcel"
Set CopyRng = Application.Selection
Set CopyRng = Application.InputBox("Ranges to be copied :", xTitleId,
CopyRng.Address, Type:=8)
Set PasteRng = Application.InputBox("Paste to (single cell):", xTitleId,
Type:=8)
CopyRng.Copy
PasteRng.Parent.Activate
PasteRng.PasteSpecial xlPasteValuesAndNumberFormats
PasteRng.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End Sub
Merci
Cordialement

Voir l'aide sur la méthode .PasteSpecial pour voir quels paramêtres sont possibles.
Avatar
MichD
Le 2021-06-14 Í  16:55, totontitus a écrit :
Bonjour,
Serait-il possible avec ce code ci-joint de copier aussi les formules
puisque dans l'actuel les formules ne sont pas copier
Sub CopyValuesAndNumberFormats()
Dim CopyRng As Range, PasteRng As Range
xTitleId = "KutoolsforExcel"
Set CopyRng = Application.Selection
Set CopyRng = Application.InputBox("Ranges to be copied :", xTitleId,
CopyRng.Address, Type:=8)
Set PasteRng = Application.InputBox("Paste to (single cell):", xTitleId,
Type:=8)
CopyRng.Copy
PasteRng.Parent.Activate
PasteRng.PasteSpecial xlPasteValuesAndNumberFormats
PasteRng.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End Sub
Merci
Cordialement

Bonjour,
Un petit exemple. Copier le contenu (textes + formules) de la plage
"A1:C3" de l'onglet Feuil1 vers l'onglet Feuil2
'-------------------------------
Sub Test()
Dim T As Variant
with Worksheets("Feuil1"
T = .Range("A1:C3").Formula
End With
With Worksheets("Feuil2")
.Range("A1").Resize(UBound(T, 1), UBound(T, 2)) = T
'A1 = La première cellule de la plage o͹ doit se faire la copie
End With
End Sub
'-------------------------------
MichD