extraire de cellule x à cellule y

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

boulbidule

XLDnaute Nouveau
Bonjour à tous 🙂

je cherche à copier via mots clés de cellule X à cellule Y vers onglet 2 par exemple

en fait j'ai pas le même nombre de ligne dans chacun de mes exemples,

du coup je pensais dire copier de tel mot à tel mot

par exemple ci dessous pour extraire les prénoms

je pensais faire une règle qui copie de : "bien" à "ce"

merci pour votre aide (très très précieuse 😉 )
 

Pièces jointes

Re : extraire de cellule x à cellule y

Bonjour,
bien et ce sont présents plusieurs fois en colonne A donc que veux-tu obtenir exactement dans le cas présent ?
Le plus simple est de placer manuellement dans ton fichier exemple le résultat attendu.
A+
 
Re : extraire de cellule x à cellule y

Et y-a-t-il un élément qui distingue les prénoms des autres mots ? Dans ton exemple ils sont en majuscule : est-ce le cas ?
Sont-ils toujours précédés ou suivis du même mots ? Bref quels sont les éléments qui pourraient nous aider à les localiser ?
A+
 
Re : extraire de cellule x à cellule y

Et y-a-t-il un élément qui distingue les prénoms des autres mots ? Dans ton exemple ils sont en majuscule : est-ce le cas ?
Sont-ils toujours précédés ou suivis du même mots ? Bref quels sont les éléments qui pourraient nous aider à les localiser ?
A+

et non David 🙁
aucun signe distinctif,
là c'est en majuscule pour l'exemple

je viens de refaire un exemple excel pour te montrer

des fois il y a plusieurs prénoms

il n'y a bien que "bien" et "ce" pour distinguer
 

Pièces jointes

Re : extraire de cellule x à cellule y

A partir des informations fournies ci-joint une possibilité à tester :
Code:
Sub test()
Dim DerLig As Long, T, i As Long, S As String

DerLig = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To DerLig
  S = S & Sheets("Feuil1").Range("A" & i) & " "
Next i

T = Split(Left(S, Len(S) - 1), "bien")

For i = 1 To UBound(T)
  Range("B" & i) = Split(T(i), "ce")(0)
Next i
End Sub
A+
 
Re : extraire de cellule x à cellule y

Bonjour à tous.


Un autre essai :
Code:
Sub toto()
Dim k&, l&, c&, x(), y$()
Const d$ = "bien"
Const f$ = "ce"
  With Feuil1.[A1]: x = Range(.Cells, .Parent.Cells(.Parent.Rows.Count, .Column).End(xlUp).Offset(1)).Value: End With
  With Feuil2.[A1]
    With Application: .ScreenUpdating = 0: .EnableEvents = 0: .Calculation = -4135: End With
    .CurrentRegion.ClearContents
    x(UBound(x), 1) = f
    For k = 1 To UBound(x) - 1
      If LCase(x(k, 1)) = d Then
        c = 0
        Do Until LCase(x(k + 1, 1)) = f Or LCase(x(k + 1, 1)) = d
          k = k + 1
          If Not IsEmpty(x(k, 1)) Then
            ReDim Preserve y(0, c)
            y(0, c) = x(k, 1)
            c = c + 1
          End If
        Loop
        If c Then .Offset(l).Resize(1, c).Value = y
        l = l + 1
      End If
    Next
    With Application: .Calculation = -4105: .EnableEvents = 1: .ScreenUpdating = 1: End With
  End With
End Sub


ℝOGER2327
#7868


Mardi 24 Palotin 142 (Sainte Lumelle, écuyère - fête Suprême Quarte)
24 Floréal An CCXXIII, 6,8689h - valériane
2015-W20-3T16:29:07Z
 
Re : extraire de cellule x à cellule y

petit rappel
extrait de la charte du forum
3 – Le titre de la question doit être clair et comporter explicitement le sujet de la demande.
Cela sous-entend qu’une nouvelle demande fait l’objet d’un nouveau fil.

me suis donc basé sur ton message 😉
 
Re : extraire de cellule x à cellule y

Bonsoir boulbidule, David, Roger, Jean-Marie,

Si la vitesse d'exécution n'a guère d'importance
.

1) Solution par formule matricielle en B2 :

Code:
=REPT(A2;(MAX((A$1:A1="bien")*LIGNE(A$1:A1))>MAX((A$1:A1="ce")*LIGNE(A$1:A1)))*(A2<>"ce"))
2) Solution VBA qui utilise la formule précédente :

Code:
Sub GO()
[B:B].ClearContents
With [A1].CurrentRegion.Offset(, 1)
  .Cells(1) = "Liste"
  If .Rows.Count = 1 Then Exit Sub
  .Cells(2).FormulaArray = "=REPT(A2,(MAX((A$1:A1=""bien"")*ROW(A$1:A1))>MAX((A$1:A1=""ce"")*ROW(A$1:A1)))*(A2<>""ce""))"
  .Cells(2).AutoFill .Offset(1).Resize(.Rows.Count - 1)
  .Value = .Value 'supprime les formules
  .Sort .Cells, xlAscending, Header:=xlYes 'tri
End With
End Sub
Fichiers joints.

Bonne fin de soirée.
 

Pièces jointes

Re : extraire de cellule x à cellule y

Re,

Avant d'aller au lit, comparaison des durées d'exécution des macros sur le fichier du post #5/post #12 :

- David84 => 0,9 milliseconde

- Roger2327 => 35 millisecondes (étonnant)

- job75 => 3,5 millisecondes.

Bonne nuit.
 
Re : extraire de cellule x à cellule y

Bonjour le forum,

Je vous ai fait une frayeur Roger 🙄

J'avais testé précédemment sur 39 lignes en faisant une boucle de 1000 itérations.

Ci-joint le fichier avec 10000 lignes, résultats plus cohérents sur Win 8 - Excel 2013 :

- David84 => 0,40 seconde

- Roger => 0,08 seconde

- job75 => 32 secondes...

Bonne journée.
 

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
19
Affichages
475
Réponses
17
Affichages
476
Retour