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

J

JJ1

Guest
Bonjour,
Je souhaiterais récupérer sur une ligne une suite continue de nombres, présente dans la plage de cette ligne:
ex:
A1:G1
2 4 5 6 7 10 12
j'aurais à partir de H1:
5 6 7
(on se limite à 3 nombres)
merci de vos suggestions.
Bon AM
 
Re : Formule d'une suite

Bonjour JJ1,

Je ne vois pas de formules, mais voici une macro :

Code:
Sub Serie()
For i = 1 To 6
Range("H2:N2") = "" 'zone d'essai
j = 0
While Cells(1, i + j + 1) = Cells(1, i + j) + 1
Cells(2, j + 8) = Cells(1, i + j)
Cells(2, j + 9) = Cells(1, i + j + 1)
j = j + 1
Wend
If Application.CountA(Range("H2:N2")) > Application.CountA(Range("H1:N1")) _
  Then Range("H1:N1").Value = Range("H2:N2").Value
Next
Range("H2:N2") = ""
End Sub

Elle inscrit à partir de H1 la plus longue série de la plage A1:G1, et si d'autres séries ont la même longueur, c'est la 1ère trouvée qui est retenue.

Edit : salut abcd

A+
 
Re : Formule d'une suite

Re,

J'oubliais JJ1 que tu ne veux qu'un maximum de 3 nombres, donc :

Code:
Sub Serie()
Dim i As Byte, j As Byte, col As Byte
Range("H1:N1") = ""
For i = 1 To 6
Range("H2:N2") = "" 'zone d'essai
j = 0
While Cells(1, i + j + 1) = Cells(1, i + j) + 1
Cells(2, j + 8) = Cells(1, i + j)
Cells(2, j + 9) = Cells(1, i + j + 1)
j = j + 1
Wend
If Application.CountA(Range("H2:N2")) > Application.CountA(Range("H1:N1")) _
  Then Range("H1:N1").Value = Range("H2:N2").Value
Next
col = Application.Max(Application.CountA(Range("H1:N1")) + 7, 10)
Range("H2:N2").Value = Range("H1:N1").Value
Range("H1:N1").Value = ""
Range("H1:J1").Value = Range(Cells(2, col - 2), Cells(2, col)).Value 'copie les 3 cellules de droite
Range("H2:N2").Value = ""
End Sub

Edit : j'ai juste complété la 1ère macro, donc il s'agit des 3 nombres de droite (s'il y a au moins 3 nombres) de la série la plus longue

A+
 
Dernière édition:
Re : Formule d'une suite

Rebonjour,

Un autre essai. Cette fois on prend la série la plus à droite de 3 nombres maximum :

Code:
Sub Serie()
Dim i As Integer, j As Byte
Range("H1:J1") = ""
For i = 7 To 2 Step -1
Range("H2:J2") = "" 'zone d'essai
j = 0
While Cells(1, i - j) = Cells(1, i - j - 1) + 1 And j < 2
Cells(2, 10 - j) = Cells(1, i - j)
Cells(2, 9 - j) = Cells(1, i - j - 1)
If i = 2 Then GoTo 1
j = j + 1
Wend
1 If Application.CountA(Range("H2:J2")) > Application.CountA(Range("H1:J1")) _
  Then Range("H1:J1").Value = Range("H2:J2").Value
Next
If Range("H1") = "" Then Range("H1").Delete Shift:=xlToLeft
Range("H2:J2") = ""
End Sub

A+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
XL 2013 Annulé
Réponses
6
Affichages
297
Réponses
6
Affichages
616
  • Question Question
Microsoft 365 MFC dans tableau
Réponses
2
Affichages
361
Réponses
1
Affichages
219
Retour