XL 2016 resumer code vba

  • Initiateur de la discussion Initiateur de la discussion lamho27
  • 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 !

lamho27

XLDnaute Occasionnel
bonjour a tous
j'ai une code vba integer mais trop long , pouvez-vous me modifier pour simplement mon code; merci d'avance
Sub Button()
Dim j As Integer
j = 1
For i = 1 To 40
If Not IsEmpty(Range("B" & i).Value) Then
Range("H" & j + 1).Value = Range("B" & i).Value
j = j + 1
End If
Next i
j = 1
For i = 1 To 40
If Not IsEmpty(Range("C" & i).Value) Then
Range("I" & j + 1).Value = Range("C" & i).Value
j = j + 1
End If
Next i
j = 1
For i = 1 To 40
If Not IsEmpty(Range("D" & i).Value) Then
Range("J" & j + 1).Value = Range("D" & i).Value
j = j + 1
End If
Next i
j = 1
For i = 1 To 40
If Not IsEmpty(Range("E" & i).Value) Then
Range("K" & j + 1).Value = Range("E" & i).Value
j = j + 1
End If
Next i
j = 1
For i = 1 To 40
If Not IsEmpty(Range("F" & i).Value) Then
Range("L" & j + 1).Value = Range("F" & i).Value
j = j + 1
End If
Next i
j = 1
For i = 1 To 40
If Not IsEmpty(Range("G" & i).Value) Then
Range("M" & j + 1).Value = Range("G" & i).Value
j = j + 1
End If
Next i
End Sub
 
Bonjour le fil, le forum

@lamho27
Essaie cette macro qui semble faire le job, non ?
VB:
Sub a()
    Range("B1:G32").Copy
    Range("H2").PasteSpecial Paste:=xlPasteAll, SkipBlanks:=True
    Selection.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End Sub
La même après un petit régime
VB:
Sub b()
Application.ScreenUpdating = False
[B1:G32].Copy: [H2].PasteSpecial Paste:=xlPasteAll, SkipBlanks:=True
Selection.SpecialCells(4).Delete -4162: [H2].Select
End Sub
 
Dernière édition:
Re

Comme il marche quand on clique une première fois, moi ca me va 😉

NB: Où est-il écrit qu'il faille cliquer plusieurs fois?

Et avec cette version, tu peux cliquer jusqu'à plus soif
VB:
Sub b()
Application.ScreenUpdating = False
[B1:G32].Copy: Cells(Rows.Count, "H").End(xlUp)(2).PasteSpecial Paste:=xlPasteAll, SkipBlanks:=True
Selection.SpecialCells(4).Delete -4162: [H2].Select
End Sub
 
Bonjour Dranreb

Je ne vois pas de différence sur le classeur de test en mettant sur False
Le résultat est le même chez moi.
(je parle de la macro b)
Et même avec celle-ci
VB:
Sub c()
Application.ScreenUpdating = False
[B1:G32].Copy: Cells(Rows.Count, "H").End(xlUp)(2).PasteSpecial -4104
Selection.SpecialCells(4).Delete -4162: [H2].Select
End Sub
La copie se fait en H2 et on décale les cellules non vides vers le haut
 
Re

Je suis sur Excel 2013 (pas très différent de 2016)
Les 3 macros fonctionnent pourtant chez moi.
Ici résultat de la macro a
01macroa.jpg
Ici résultat de la macro c aprés 4 exécutions de celle-ci
01macroc.jpg
Par contre effectivement, avec le code de vgendron, Excel refuse la sélection multiple pour la copie et j'ai aussi un message d'erreur.
 
Dernière édition:
Bonjour à tous,

Une autre manière de faire ? :
VB:
Sub SupprVide()
Dim i&
   Application.ScreenUpdating = False
   With Worksheets("Feuil1")
      On Error Resume Next
      .Range("B:G").Copy .Range("H:M")
      .Range("H:M").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
      For i = 1 To .Rows.Count
         If Application.WorksheetFunction.Count(.Range("h" & i & ":m" & i)) = 0 Then Exit For
      Next i
      .Range("h1:M" & i - 1).Borders.LineStyle = xlDot
   End With
End Sub
 

Pièces jointes

- 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
8
Affichages
269
Réponses
4
Affichages
579
Réponses
5
Affichages
702
Réponses
2
Affichages
75
Réponses
10
Affichages
529
Réponses
2
Affichages
426
Réponses
8
Affichages
645
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
217
Réponses
5
Affichages
477
Retour