Code VBA "court" pour redéfinir la dernière cellule active (utilisation SPECIALCELLS)

  • Initiateur de la discussion Initiateur de la discussion zebanx
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

zebanx

XLDnaute Accro
Bonjour,

J'utilise un code un peu long pour redéfinir la dernière cellule active d'une feuille.

Auriez-vous svp un code ou des lignes de codes plus courtes pour obtenir un résultat identique ?

Ci-joint un fichier avec sur le code de "REMPLIR" la ligne volontairement suspendue qui ne permet pas de limiter le nombre de lignes mais compte le nombre de lignes supprimées avec utilisation dans le code de "specialcells" (si vous supprimez les 3 erreurs en orange de la colonne A svp).

Vous en remerciant, bonne soirée
zebanx

code :
Sub suppLigneVides()
With ActiveSheet.UsedRange
derLi = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = False
For r = derLi To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r
With ActiveSheet.UsedRange
derLi = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = False
For r = derLi To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r
End Sub
 

Pièces jointes

Bonjour zebanx,

Une autre façon de faire :
VB:
Sub splitderLig_2()
Dim separ$, j&, derligne&, T, i&, k&, vide As Boolean

   'recherche n° dernière ligne des colonnes 2 à 4 pour effacement
   derligne = 2
   For j = 2 To 4
      i = Cells(Rows.Count, j).End(xlUp).Row
      derligne = IIf(i > derligne, i, derligne)
   Next j
   Range("b2:d" & derligne).ClearContents

   'dernière ligne des données de la colonne A
   derligne = Range("A" & Rows.Count).End(xlUp).Row
   If derligne = 1 Then Exit Sub

   ' acquisition séparateur et veut-on remplir les cellules vides ?
   separ = InputBox("Entrez le séparateur SVP" & vbCrLf _
                    & "(pour remplir les colonnes suivantes)", "NomDeLafenêtre", "/")
   vide = MsgBox("Remplir les cellules vides ?", vbQuestion + vbYesNo + vbDefaultButton1) = vbYes
   Application.ScreenUpdating = False

   'remplissage des lignes
   For i = 2 To derligne
      T = Split(Cells(i, "a"), separ)
      'copier valeurs de T sur la ligne i
      For j = 0 To UBound(T): Cells(i, "b").Offset(, j) = Trim(T(j)): Next j
      'compléter les cellules vides avec la dernière valeur de T
      If vide And j > 0 Then
         For k = j To 2: Cells(i, "b").Offset(, k) = Trim(T(j - 1)): Next k
      End If
   Next i
End Sub
 

Pièces jointes

Re- MaPomme

Merci pour cette réponse très détaillée.*

SpecialCells m'apparaissait comme la réponse la plus intuitive (sur la fin de code) mais ton code est intéressant pour, en particulier :
- aller rechercher la dernière valeur i sur les colonnes B et D avec une boucle. Je me demandais si ce n'était pas trop long mais il faut bien boucler sur chacune des trois colonnes pour aller rechercher la dernière ligne vide.
- sur le split final avec une double boucle (ligne et saut de colonne avec Ubound pour découper la cellule en colonne A). Une vraie simplification.

J'ai un petit fichier avec les codes sur une boucle pour réaliser ces splits.
Je ne pourrais pas tout changer d'un coup mais j'y complète ton code qui pourrait me servir, comme tous tes codes d'ailleurs, ultérieurement.

Bonne journée et encore merci.
++
zebanx.

*nb : La prochaine fois, je veillerai toutefois à te lister les parties mal comprises plutôt que de te faire retravailler (ce que je n'avais pas prévu) pour commenter le code complet.
Ta générosité / bienveillance (sans brossage, hein !) est déjà fort connue par tout ceux qui utilisent E.D. mais il n'y a aucune raison pour en abuser -) et te faire, dans le cas présent, un double travail.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
828
Retour