Franchement je vois pas
J’ai essayé Range("A1:Dl").ClearContents
et plein d’autre truc.
Mais ça ne fonctionne pas, ça me fou le boules il me manque que ça pour rendre une copie propre.
@+
Franchement je vois pas
J’ai essayé Range("A1:Dl").ClearContents
et plein d’autre truc.
Mais ça ne fonctionne pas, ça me fou le boules il me manque que ça pour rendre une copie propre.
@+
Bonsoir
A votre avis excel reconnais la dernière ligne par le nombre de répétition mentionné.
je pense que ça me dépasse cette astuce
je continue a observer
Merci Mimimathy
Bonsoir à vous,
Dl est le N° de la ligne qui comporte la dernière valeur
je veux effacer de la cellule C5 à la cellule C & Dl
donc, je pourrais mettre
Dl = Range(“C” & Rows.Count).End(xlUp).Row
Range(« C5:C » & Dl ).clearcontents
mais au lieu de 2 lignes, une seule suffit
Là, je peut aller plus loin
Re,
Après MDO, tu as déjà gagné, car la macro posté plus haut est déjà fonctionnel
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Dl%, Table%, Rep%, i%
If Not Application.Intersect(Target, Range("B3,E3")) Is Nothing Then
'Range("C5:C65000").ClearContents
Table = Cells(3, 2)
Rep = Cells(3, 5)
'*************************************************
'* Dans cette partie, il y a une astuce à faire *
Dl = Range("C" & Rows.Count).End(xlUp).Row
Range("C5:C65000").ClearContents
'*************************************************
For Rep = 1 To Rep
Cells(Rep + 4, 3) = Rep & " x " & Table & " = " & Rep * Table
Next Rep
End If
End Sub
Re à tous,
Donc je vous post le résultat que j’avais tirer (en fait j’en ai fait 2 versions)
Version avec une boucle FOR /NEXT
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i%, Mult% 'Déclaration de variable
If Not Application.Intersect(Target, Range("B3,E3")) Is Nothing Then 'Si les cellules B3 ou E3 sont modifiées alors
'Range("C5").CurrentRegion.Clear 'ou ClearContents - J'efface les données de la colonne de C5 à la fin par la sélection de la plage
'(A utiliser si les colonnes adjacentes sont vides, sinon cela effacera ces données aussi)
'ou
Range("C5:C" & Range("C" & Rows.Count).End(xlUp).Row) = "" 'ou ClearContents - J'efface les données de la colonne de C5 à la dernière cellule remplie
Mult = Range("B3").Value
For i = 1 To Range("E3").Value 'Boucle N fois la valeur de E3
'Cells(i + 4, 3).Value = i & " x " & Mult & " = " & i * Mult 'Formule avec Cells
'ou
Range("C" & i + 4).Value = i & " x " & Mult & " = " & i * Mult 'Formule avec Range
Next i
End If
End Sub
Version avec une boucle WHILE/WEND
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i%, Mult% 'Déclaration de variable
If Not Application.Intersect(Target, Range("B3,E3")) Is Nothing Then
Range("C5:C" & Range("C" & Rows.Count).End(xlUp).Row) = "" 'ou ClearContents - J'efface les données de la colonne de C5 à la dernière cellule remplie
Mult = Range("B3").Value
i = 1 'J'initialise un compteur à 1
While i <= Range("E3") 'Autre type de boucle qui se traduit par (Tant que i est inf ou égal au Nb de répet, je continue avec la formule
'Cells(i + 4, 3).Value = i & " x " & Mult & " = " & i * Mult 'Formule avec Cells
'ou
Range("C" & i + 4).Value = i & " x " & Mult & " = " & i * Mult 'Formule avec Range
i = i + 1 'Je rajoute 1 au compteur
Wend
End If
End Sub
Table de multiplication dynamique.xlsm (16,8 Ko)
Je n’ai pas mis de liste déroulante, car si je veux faire une table de 123en 123 répétions, !!!
Bonsoir @Mimimathy, @sadi58,
Donc j’ai gagné une médaille en chocolat et 20% de ta gratitude, car sans les 80% d’aide de ta part pour cet exercice j’y serais encore
Cela dit, nous ne pouvons que progresser avec le partage de ton savoir en VBA merci de le partager pour le plus grand nombre d’entre nous.
Je regarderai de près les 2 façons de faire les boucles.
Belle soirée.
Bonsoir
Et ben Merci a Toi mdo100 et merci a toi Mimimathy je vais voir les deux versions
voila on progresse de plus en plus grâce a des gents brave comme vous.
merci encore pour le partage
Re,```
Explication de cette erreur
Ici, tu fait une boucle FOR/NEXT allant de Dl (dernière ligne) à 1
Alors cela bloque pour deux raisons:
1 - La variable Dl n’est pas encore déclarée, donc « BUG »
2 - Au cas où la variable Dl est déclarée (donc que la ligne soit avant la ligne du FOR, la boucle commence de la fin à 1, or une boucle tourne en augmentant de 1 si il n’y a pas d’autre précision
Pour que la boucle commence de la fin au début, on ajoute STEP -1 qui veut dire en retranchant d’une ligne
soit
Dl = Range("C" & Rows.Count).End(xlUp).Row
For Rep = Dl To 5 Step -1 'de la dernière ligne à la ligne 5 en reculant d'une ligne
Range("C" & Rep).ClearContents
Next Dl
C’est le style de boucle qui peut servir à supprimer des lignes vides ou comportant une valeur définie
Un exemple en PJ qui montre que si deux lignes vides se touche, tout n’est pas supprimer en commençant pas le haut
Test.xlsm (17,2 Ko)
Salut @Mimimathy,
C’est noté:
Merci pour les informations complémentaires concernant les boucles:
For
Next
Et l’utilisation de Step -1
Je comprends mieux pourquoi cela tournait en rond.
Belle journée à toi.
Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.