Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 mapomme

C'est la même méthode, non?
'[B1:G32].Copy: Cells(Rows.Count, "H").End(xlUp)(2).PasteSpecial -4104
.Range("B:G").Copy .Range("H:M")
.Range("H:M").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
'idem:Selection.SpecialCells(4).Delete -4162
Sauf que tu copies les colonnes entières

@lamho27
On se sait pas comment est alimentée la plage B1:G32.
Est-ce qu’après la recopie, elle est effacée manuellement?
Et qu'ensuite tu y saisis de nouvelles dates?
 
Re mapomme

Tu peux m'expliquer le pourquoi de ta boucle, stp?
For i = 1 To .Rows.Count
If Application.WorksheetFunction.Count(.Range("h" & i & ":m" & i)) = 0 Then Exit For
Next i

(Je suis pas encore bien réveillé 😉 )

EDITION:
Il me manquait juste cette ligne, si j"ai bien compris
VB:
Sub aa()
Application.ScreenUpdating = False
If Len([H2]) > 0 Then Exit Sub
[B1:G32].Copy: [H2].PasteSpecial Paste:=xlPasteAll, SkipBlanks:=True
Selection.SpecialCells(4).Delete -4162: [H2].Select
End Sub
 
Re Staple1600 😉,

Maintenant que tu es redevenu visible...🙄

Je recherche simplement la première ligne i entièrement vide des colonnes h à m pour appliquer aux lignes 1 à (i-1) l'encadrement pointillé. C'est pas optimisé mais ça le fait 😛.
 
Re Staple1600 😉,

Une autre petite différence, me semble-t-il, est que ma macro prend en compte les modifications du tableau source entre deux exécutions. Ta macro, une fois exécutée, ne retraite pas les données sources ( du moins, il me semble).
 
Hello le forum
bizarre effectivement, ma proposition ne fonctionne pas sur le fichier posté par Lamho27, lequel contient des dates

alors que ca fonctionnait bien sur le fichier que je m'étais créé et qui ne contenait que des chiffres...
cf feuille2 du classeur

sans doute qu'excel n'aime pas la correspondance xlcelltypeconstant avec des dates....
 

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
703
Réponses
2
Affichages
75
Réponses
10
Affichages
530
Réponses
2
Affichages
426
Réponses
8
Affichages
646
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
217
Réponses
5
Affichages
477
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…