Macro - Erreur dans la reprise des données

Bonjour,

Je me permets de solliciter à nouveau votre aide et votre expertise concernant la reprise des champs dans une macro.

J'ai un peu de mal à trouver une solution pour renseigner les valeurs de chacune des feuilles du fichier .xls dans les bonnes cellules.

Les feuilles 1 et 2 de mon fichier Excel contiennent des données cadastre et propriétaires (le nombre de feuilles peut être illimité).

Dans chaque Feuille, le nombre de propriétaire peut être variable.

La feuille Matrice est la feuille dans la laquelle je souhaite centraliser mes données.

Les problématiques sont les suivantes :

1- Les références de section et Parcelle situées dans les cellules D11 et E11 de chacune des sheet ne sont pas reportées dans les bonnes cellules de la sheet 'MATRICE'.

Comment faire pour que ces valeurs soient reprises pour chacune des lignes de ma feuille MATRICE.

Dans l'exemple Ci-joint les Cellules D11 et E11 de la Feuille 1 sont reprise dans les cellules F8 et G8 de la feuille Matrice ce qui est correcte.

En revanche, Cellules D11 et E11 de la Feuille 2 devraient être reprise dans ces cellules F12 et G12 de la feuille Matrice, or ce n'est pas le cas. J'ai du faire une erreur quelque part, mais je ne trouve pas la solution.

2- Les données Adresse et CP COMMUNE reprise depuis les sheets 1 et 2 sont fusionnées dans la même cellule de la feuille 'Matrice' (Colonne N).

Je souhaiterai que l'adresse soit reportée dans la colonne M et la Commune et le CP dans la colonne N.

Pourriez-vous, s'il vous plait, m'aider à solutionner ces 2 problèmes,

Je vous remercie par avance pour votre aide précieuse, et pour votre temps.

Bien à vous,

Bonsoir,

C'est pas mal tarabiscoté ton affaire... Normaliser tes fichiers éviterait tout ce cinéma.

J'ai ajouté quelques variables, et par la même occasion fait 3 choses :

  • typer les variables (qui ne l'étaient pas)
  • réintégrer les variables dans la procédure (car il n'était pas justifié qu'elles soient de niveau module)
  • introduit explicitement la feuille MATRICE en qualificateur d'objet (car la non qualification risque toujours un jour de poser quelques problèmes et tu n'es plus ligoté à l'avoir comme feuille active pour lancer ta procédure).

Cordialement.

Bonjour MFerrand,

Je vous remercie énormément pour votre réponse et pour vos précieux conseils.

Vous êtes vraiment formidable.

Excellente journée,

Bien à vous

Rebonjour,

Encore merci pour votre aide,

Je me permets de solliciter à nouveau vos connaissances, car je souhaiterais ajouter quelques informations complémentaires dans ce fichier, et j'ai encore un décalage de ligne que je ne parviens à résoudre.

Toujours dans le fichier de Matrice, Je souhaiterais reprendre les informations suivantes des sheets contenant les données cadastre, dans la feuille " MATRICE" :

  • Nom du conjointe ( Colonne E s'il s'agit d'un Personne ou d'une raison sociale) => à reprendre dans la feuille "Matrice", dans la colonne K
  • Date de Naissance ( Colonne C ) => à reprendre dans la feuille "Matrice", dans la colonne P
  • Droit (Colonne F ou D s'il s'agit d'un Personne ou d'une raison sociale) => à reprendre dans la feuille "Matrice", dans la colonne L

J'ai tenté de modifier la Macro, en ajout des éléments de type (désolé, ce n'est pas très brillant):

y = Range("L" & lgn)

Range("L" & lgn) = f.Range("F" & ln + k) & Chr(10)

z = Range("K" & lgn)

Range("K" & lgn) = f.Range("E" & ln + k) & Chr(10)

Néanmoins j'ai toujours un décalage et les champs sont repris aléatoirement.

Je vous remercie par avance pour votre aide précieuse, (Je débute, et je suis un peu perdue avec ce fichier).

Bien à vous

Je t'avais dit que c'était tarabiscoté de travailler sur ton fichier !

Ce qu'il faudrait c'est homégénéiser la présentation des 2 types de fiches, des façon qu'on les même infos aux mêmes endroits, réintégrer la commune dans une zone ad-hoc des fichier au lieu d'aller la chercher dans une fin de ligne où on se demande ce qu'elle y fait, éliminer les cellules fusionnées...

et réécrire une procédure qui sera plus simple...

Enfin ! C'est toujours un exercice de jongler dans des références totalement irrégulières...

Mais tu vas devoir attendre un peu car je ne suis pas à la même heure !

A+

Re,

Version re-rustinée :

Sub MiseAjour()
    Dim f As Worksheet, ln&, lln&, lgn%, i%, c%, k%, v
    With Worksheets("MATRICE")
        lgn = .Range("J" & .Rows.Count).End(xlUp)(2).Row
        Application.ScreenUpdating = False
        For Each f In Worksheets
            If f.Range("A8") = "Sélection" Then
                .Range("D" & lgn) = Mid(f.Range("A1"), InStrRev(f.Range("A1"), " "), _
                 Len(f.Range("A1")) - InStrRev(f.Range("A1"), " ") + 1)
                .Range("F" & lgn) = f.Range("D11")
                .Range("G" & lgn) = f.Range("E11")
                c = 0
                If f.Range("A14") = "Raison sociale" Then c = -2
                lln = f.Range("G" & Rows.Count).Offset(, c).End(xlUp).Row
                For ln = 15 To lln
                    If f.Range("A" & ln) <> "" Then
                        .Range("J" & lgn) = f.Range("A" & ln)
                        .Range("L" & lgn) = f.Range("F" & ln).Offset(, c)
                        If f.Range("A14") = "Nom / Prénom" Then
                            .Range("K" & lgn) = f.Range("E" & ln)
                            .Range("P" & lgn) = f.Range("C" & ln)
                        End If
                        Do
                            v = v & Chr(10) & f.Range("G" & ln + k).Offset(, c)
                            k = k + 1
                        Loop While f.Range("A" & ln + k) = "" And ln + k <= lln
                        v = Split(v, Chr(10))
                        .Range("N" & lgn) = v(UBound(v))
                        v(UBound(v)) = "": v = Trim(Replace(Join(v, Chr(10)), Chr(10), " "))
                        .Range("M" & lgn) = v
                        lgn = lgn + 1: k = 0: v = ""
                    End If
                Next ln
            End If
        Next f
        Application.ScreenUpdating = True
    End With
End Sub

Cordialement.

Bonjour MFerrand,

Pardonnez-moi pour le retard de ma réponse,

Mille mercis, c 'est exactement le résultat dont j'avais besoin. Vous êtes vraiment exceptionnel et formidable.

Je vous remercie infiniment pour votre aide et pour votre célérité.

Bonne soirée,

Anne-Gaëlle

Tu n'as pas de retard !

Mais réfléchis à la possibilité d'harmoniser les deux types de fiches... parce que la prochaine fois, à force de rustiner... on ralentit un peu VBA (mais tant que le volume n'est pas trop important, cela reste peu sensible), mais c'est surtout pour coder qu'on s'y perd si chaque cas devient un cas spécifique. Tu l'as expérimenté je crois !

La première fois, j'ai passé du temps, ne connaisant pas ton fichier, à recompter lignes colonnes pour retomber sur les bonnes...

Cette fois, j'ai eu moins de mal, le fichier est apprivoisé , mais sur les 3 cas, un pouvait rentrer dans les conditions existantes, mais il a fallu une condition supplémentaire pour les deux autres (une seul pour les deux tout de même ).

Bonne soirée.

Bonsoir MFerrand,

Mille mercis pour vos précieux conseils.

J'ai utilisé le fichier et la macro que vous m'avez faite pour répondre à ma problématique immédiate, et quotidienne.

En parallèle, j'ai également créé 2 fichiers pour couvrir l'ensemble des reprises de données.

Vous êtes vraiment formidable.

Je vous souhaite une excellente soirée, et vous remercie encore pour votre aide.

A bientôt,

Bien à vous,

Anne-Gaëlle

Merci à toi du retour... Je vais continuer à rouler au gazoil !

Rechercher des sujets similaires à "macro erreur reprise donnees"