IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

FIND avec cellules fusionnées


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Points : 50
    Points
    50
    Par défaut FIND avec cellules fusionnées
    Bonjour à tous,

    Peut-on faire une recherche find dans un tableau comprenant des cellules fusionnées ?

    Mon code fonctionne pour un tableau sans cellules fusionnées mais avec, il débloque.

    Je vous joins un fichier pour exemple.

    Vous verrez que pour la colonne A, la macro fonctionne mais dès qu'il doit remonter en colonne C, cela ne va plus.

    Il passe sans doute en colonne B qui n'existe pas...


    Classeur1.xlsm

    Merci

  2. #2
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Bonjour,

    Pourrais-tu passer par un split ?

    Tu peux voir ceci:
    http://www.developpez.net/forums/d57...es-fusionnees/

  3. #3
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Comme quoi les cellules fusionnées sont vraiment à proscrire ;-)

    Tu peux, mais il ne faut traiter que la 1ère cellule d'une plage fusionnée puisque les autres sont vides.
    Et comme elles sont vides ton xltoleft n'est pas bon non plus puisque qu'il s'arrêtera en colonne B ou D et non A comme voulu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub MettreAJourAgenda()
        Dim Lng, Col, o As String
        Dim PlageFe1, PlageFe2 As Range
     
        Set PlageFe1 = Sheets("Feuil2").Range("b18:B30")
        Set PlageFe2 = Sheets("Feuil2").Range("B2:F13")
        For Each cell1 In PlageFe2
            If Not cell1.MergeCells Or cell1 = cell1.MergeArea.Range("A1") Then
                Lng = Cells(cell1.Row, 1)
                Col = Cells(1, cell1.Column)
                o = Lng & Col
                Set CellTrouvee = PlageFe1.Find(o, lookat:=xlWhole)
                If CellTrouvee Is Nothing Then
                    cell1.Value = "?"
                Else
                    cell1.Value = CellTrouvee.Offset(0, -1).Value
                End If
            End If
        Next cell1
    End Sub
    eric

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Bonjour Messieurs,

    Merci déjà.

    Eric, il me semble que ton code peut fonctionner mais j'ai une erreur 1004 sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cell1.Value = CellTrouvee.Offset(0, -6).Value
    Erreur 1004 : erreur définie par l'application ou par l'objet

    Elle fonctionne avec -1 comme dans l'exemple ci-avant mais dans mon programme, j'ai besoin de décaler de -6.

    Sais-tu comment je peux identifier cette erreur ?

    Merci

  5. #5
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    La recherche se fait en colonne B, comment veux tu faire un offset(, -6) (6 colonnes avant la colonne B)
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Si ton fichier n'est pas conforme à l'exemple et bien fourni un nouveau fichier avec les nouvelles explications.
    La ligne que tu signales en erreur est de toi. Je n'ai fait que répondre à ta question : que ça fonctionne avec des cellules fusionnées.

    eric

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par eriiic Voir le message
    Bonjour,

    Si ton fichier n'est pas conforme à l'exemple et bien fourni un nouveau fichier avec les nouvelles explications.
    La ligne que tu signales en erreur est de toi. Je n'ai fait que répondre à ta question : que ça fonctionne avec des cellules fusionnées.

    eric


    Ok, voici un fichier qui ressemble beaucoup plus à mon original :

    Classeur1.xlsm

    Je pense qu'un des problèmes provient du fait que mon tableau ne commence pas en colonne 1 et rang 1 comme vous le verrez.

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par mercatog Voir le message
    La recherche se fait en colonne B, comment veux tu faire un offset(, -6) (6 colonnes avant la colonne B)
    Merci pour ta réponse mercatog

    En fait, je ne l'ai peut-être pas signalé mais le -6, je l'ai mis dans mon tableau à moi et non dans l'original donc chez moi, oui il peut se décaler.
    Voir l'autre message..

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    bonsoir,

    et pour placer le code dans ton "tableau à toi" tu n'as modifier que le -6 ? si oui relis la réponse à mercatog !

    si non dis nous ce que tu as modifié dans le code !

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par bbil Voir le message
    bonsoir,

    et pour placer le code dans ton "tableau à toi" tu n'as modifier que le -6 ? si oui relis la réponse à mercatog !

    si non dis nous ce que tu as modifié dans le code !
    Bonsoir,

    Mon tableau de recherche est le suivant : (J7P37)

    Et le tableau a remplir : (K11:X30) tableau dans lequel il y a des cellules fusionnées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub MettreAJourAgenda()
     
        Dim Lng, Col, o As String
        Dim PlageFe1, PlageFe2 As Range
     
        Set PlageFe1 = Sheets("Planning").Range("J7:DP37")
        Set PlageFe2 = Sheets("Centrales").Range("K11:X30")
            For Each Cell1 In PlageFe2
                If Not Cell1.MergeCells Or Cell1 = Cell1.MergeArea.Range("A1") Then
                    Lng = Cells(Cell1.Row, 1)
                    Col = Cells(1, Cell1.Column)
                    o = Lng & Col
                    Set CellTrouvee = PlageFe1.Find(o, lookat:=xlWhole)
     
                    If CellTrouvee Is Nothing Then
                        Cell1.Value = "?"
                    Else
                        Cell1.Value = CellTrouvee.Offset(0, -6).Value
                    End If
                End If
            Next Cell1
    End Sub

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par thomanneca Voir le message
    Bonsoir,

    Mon tableau de recherche est le suivant : (J7P37)

    Et le tableau a remplir : (K11:X30) tableau dans lequel il y a des cellules fusionnées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub MettreAJourAgenda()
     
        Dim Lng, Col, o As String
        Dim PlageFe1, PlageFe2 As Range
     
        Set PlageFe1 = Sheets("Planning").Range("J7:DP37")
        Set PlageFe2 = Sheets("Centrales").Range("K11:X30")
            For Each Cell1 In PlageFe2
                If Not Cell1.MergeCells Or Cell1 = Cell1.MergeArea.Range("A1") Then
                    Lng = Cells(Cell1.Row, 1)
                    Col = Cells(1, Cell1.Column)
                    o = Lng & Col
                    Set CellTrouvee = PlageFe1.Find(o, lookat:=xlWhole)
     
                    If CellTrouvee Is Nothing Then
                        Cell1.Value = "?"
                    Else
                        Cell1.Value = CellTrouvee.Offset(0, -6).Value
                    End If
                End If
            Next Cell1
    End Sub
    Je vois bien que le Lng et Col ne doivent pas être à 1 mais j'ai essayé de modifié et cela ne semble pas fonctionner (surtout pour Col)..

  12. #12
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Comme ta ligne de titre est en 3 :
    Lng = Cells(cell1.Row, 3)
    et comme ta colonne de titre est C :
    Col = Cells(3, cell1.Column)

    Pour PlageFe2 je mettrais plutôt :
    Set PlageFe2 = Sheets("Feuil2").Range("j4:j15")
    eric

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par eriiic Voir le message
    Comme ta ligne de titre est en 3 :
    Lng = Cells(cell1.Row, 3)
    et comme ta colonne de titre est C :
    Col = Cells(3, cell1.Column)

    eric

    Oui, je viens de corriger mon code et il fonctionne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub MettreAJourAgenda()
     
        Dim Lng, Col, o As String
        Dim PlageFe1, PlageFe2 As Range
     
        Set PlageFe1 = Sheets("Planning").Range("J7:DP37")
        Set PlageFe2 = Sheets("Centrales").Range("k11:ab30")
            For Each Cell1 In PlageFe2
                If Not Cell1.MergeCells Or Cell1 = Cell1.MergeArea.Range("A1") Then
                    Lng = Cells(Cell1.Row, 7)
                    Col = Cells(6, Cell1.Column)
                    o = Lng & Col
                    Set CellTrouvee = PlageFe1.Find(o, lookat:=xlWhole)     
                    If CellTrouvee Is Nothing Then
                        Cell1.Value = "?"
                    Else
                        Cell1.Value = CellTrouvee.Offset(0, -6).Value
                    End If
                End If
            Next Cell1
    End Sub
    Un tout grand merci à tous pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. AdvancedDataGrid avec cellules fusionnées
    Par ®om dans le forum Flex
    Réponses: 3
    Dernier message: 25/03/2009, 17h38
  2. Find et cellules fusionnées
    Par DeaD78 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/08/2008, 17h04
  3. tableau avec cellules fusionnées en PDF
    Par fitnow dans le forum Ruby
    Réponses: 0
    Dernier message: 10/07/2008, 11h47
  4. Copier une feuille(valeur seulement) avec cellule fusionnée
    Par carpediem2807 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 14/05/2008, 16h58
  5. Macro VBA pour mettre colonne en ligne avec cellule fusionnée
    Par dany13 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/01/2008, 06h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo