Extraire 1 cellule dans une ligne

Bonjour à tous.

Excel 2011

. Dans une ligne, dans 1 cellule aléatoire se trouve des données avec un caractère spécial. Lorsque excel aura trouvé cette cellule, j'aimerais que le contenu de la cellule immédiatement à droite soit copié dans un endroit de mon choix. Si cela est possible et que quelqu'un puisse m'aider, j'en serais ravi.

Merci d'avance

Bonjour,

A mon avis , sans identifier la ligne (disons par son numéro !), sans connaître le caractère spécial à chercher, sans savoir l'emplacement de ton choix... on ne sait pas faire !

Bonjour,

Tout d'abord merci de votre réponse. Par rapport à ce que vous m'avez écrit, sans doute me suis-je mal exprimé. Je me permets de joindre un fichier excel (2007) qui je pense et espère pourra illustrer ma question

Bien à vous

Bonjour,

Deux types de solutions :

1) Solution macro :

Sub SolutionMacro()
    Dim plrech As Range, c As Range, adr$
    With ActiveSheet
        Set plrech = .UsedRange
        Set c = plrech.Find("[", , xlValues, xlPart, xlByRows)
        If Not c Is Nothing Then
            adr = c.Address
            Do
                .Cells(c.Row, 8) = c.Offset(, 1)
                Set c = plrech.FindNext(c)
            Loop While Not c Is Nothing And c.Address <> adr
        End If
    End With
End Sub

A tester en cliquant sur le bouton Test. Un échantillon plus étoffé permettrait de mieux voir...

2) Solution Fonction personnalisée :

Function SOLUTIONFONCTION(plL As Range, car As String)
    Dim c As Range
    Application.Volatile
    For Each c In plL
        If InStr(c.Value, car) Then
            SOLUTIONFONCTION = c.Offset(, 1)
            Exit Function
        End If
    Next c
    SOLUTIONFONCTION = ""
End Function

Dans ce cas c'est l'emplacement de la fonction qui définit la cellule résultat. La plage ligne de recherche et le caractère à chercher sont fournis en arguments de la fonction.

(Changer les noms de procédure par ceux qui te conviennent...)

Cordialement.

Bonjour,

Merci énormément pour votre réponse. Je me sens tout petit avec ce que vous avez écrit (utilisateur excel depuis 20 ans - en fait c’est comparer le boulier et la calculette)

Bien à vous

Bon dimanche

Re-bonjour,

J'espère ne pas abuser de votre temps, mais la solution que vous m'avez donné suite à mes questions répond tout à fait à mon besoin.

Sauf, que mon besoin réel est un peu différent. Afin de ne pas abuser des personnes comme vous qui solutionnent ou apportent des solutions, j'avais déposé ma question en pensant qu'avec la réponse, il me suffirait de dupliquer. Sauf que mes connaissances en macro sont = 0. En fait mon besoin réel n'est pas d'avoir après un caractère spécial le contenu de la cellule située à droite mais des trois cellules situées à droite après la cellule contenant le caractère spécial.

Autre question, pour emmener votre macro dans mon classeur excel, je fais copier coller?

(macro pour moi totalement inconnu)

Espérant que vous puissiez à nouveau m'aider,

Bien à vous

Pour obtenir une réponse à une question, il faut poser la question dont on veut obtenir la réponse, et non une autre !

Il faut aussi s'assurer de la cohérence de ce que l'on demande : si l'on doit renvoyer le contenu de 3 cellules à droite de la cellule trouvée, la réponse (sur la même ligne) doit être située plus de 3 cellules à droite de la dernière cellule utilisée...

Et il convient aussi que la question soit complète : sous quelle forme doit être renvoyé le contenu des 3 cellules ? dans la même cellules ? dans plusieurs ? et comment cela doit-il apparaître ?

Vraiment désolé

Ci-joint fichier dont je pense qu’il n’y aura plus d’ambiguïté. Et qui soldera le sujet

Bien à vous

Cdl

Réaménagement :

Sub SolutionMacro()
    Dim plrech As Range, c As Range, adr$, rés
    With ActiveSheet
        Set plrech = .UsedRange
        Set c = plrech.Find("[", , xlValues, xlPart, xlByRows)
        If Not c Is Nothing Then
            adr = c.Address
            Application.ScreenUpdating = False
            Do
                rés = c.Offset(, 1).Resize(, 3).Value
                With .Cells(c.Row, 12).Resize(, 3)
                    .Value = rés
                    .HorizontalAlignment = xlCenter
                End With
                Set c = plrech.FindNext(c)
            Loop While Not c Is Nothing And c.Address <> adr
            Application.ScreenUpdating = True
        End If
    End With
End Sub

Merci pour votre réponse

juste un dernier point, entre les données dans lesquelles sont recherchées le caractère spécial et les cellules ou sont affichées les résultats, je ne peux pas faire varier le nombre de colonne (I-J-K). Dans l’exemple que je vous ai envoyé, il y avait trois colonne et si j’essaie de passer à 4 et au dessus, les résultats arrivent toujours après 3 colonnes des données de tri et si j’insère par exemple 2 colonnes, j’ai les données trouvées qui se répétent

Fichier joint

CDL

J'ai introduit 2 variables supplémentaires :

nki, initialisée en début de procédure, permet de définir le nombre de colonnes intermédiaires entre la fin de la zone de recherche et les résultats. Il suffit donc de modifier la valeur affectée à nki...

k calcule la colonne où débuteront les résultats (en utilisant nki).

Ce type de procédure n'est à utiliser qu'une seule fois...

Si on teste à plusieurs reprises, il ne faut pas se contenter d'effacer les résultats, il faut supprimer toutes les colonnes qui suivent la fin de la zone de recherche jusqu'à la fin de la zone de résultats.

La dimension de la plage examinée est définie par UsedRange (plage utilisée dans la feuille). Toute cellule déjà utilisée, même effacée, demeure incluse dans UsedRange. Des essais successifs vont à chaque fois faire grossir cette plage (si on ne supprime pas...)

Cordialement.

Merci pour tout

C’est good

Bien à vous

Rechercher des sujets similaires à "extraire ligne"