Fiabiliser un code Existant

Messieurs et Dames du Forum Mes salutations.

J'aurai besoins de votre aide pour rendre robuste le code suivant

car il oublie de retranscrire la totalité.

Le but de la Manœuvre est de retranscrire les Entrées de la colonne A:A

et de les mettres en R1,R2..... par bloc de 18 séparé par des ","

Dans l'exemple ci-joint A:A = 178 et R:R = 159 donc certains on disparu ?????

Merci d'avance pour votre aide précieux

Bien cordialement

8nonfiable.xlsb (22.37 Ko)

Bonjour,

Avant toute chose, ta macro countComparateur te renvoie un résultat faux. Tu n'as pas 159 valeurs dans R:R mais 169.

Ta macro compte le nombre de virgules si j'ai bien compris, mais il faut ajouter à cette somme une virgule par ligne (car pas de virgule en fin de ligne...).

Je continue de regarder pour la suite

Re,

Les valeurs qui sautent dans la colonne A sont :

la 19ème valeur, puis la 38ème, la 57ème, etc.

DONC, toutes les 18 valeurs, ta macro saute une ligne en gros.

N'étant pas expert, je n'arrive pas à voir d'où vient l'erreur dans le code, mais quelqu'un d'autre saura sûrement t'aider !

Bonjour,

Voici un code qui fonctionne avec mise en place de deux formules dont une en matricielle pour le comparatif. Ce dernier est fait sur le nombre de caractères sachant que tu as un numéro de dossier qui ne comporte que 11 caractères (ligne 158) par rapport à tous les autres qui en comportent 13 :

Sub Test()

    Dim Plage As Range
    Dim Cel As Range
    Dim Chaine As String
    Dim I As Integer
    Dim Lg As Integer

    With Feuil8

        'défini la plage sur la colonne A à partir de A2
        Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))

        'parcours la plage...
        For Each Cel In Plage

            'concatène
            Chaine = Chaine & Cel.Value & ","

            'si supérieur...
            If Len(Chaine) > 255 Then

                'retire le dernier numéro de dossier avec les virgules (2, une avant et une après)
                'et inscrit dans la cellule colonne R à partir de R1
                Chaine = Left(Chaine, Len(Chaine) - (Len(Cel.Value) + 2))
                I = I + 1: .Cells(I, 18).Value = Chaine

                'récupère le numéro de dossier dans la chaine pour un nouveau tour
                Chaine = Cel.Value & ","

            End If

        Next Cel

        'inscrit ce qu'il reste des numéros de dossiers
        I = I + 1: .Cells(I, 18).Value = Left(Chaine, Len(Chaine) - 1)

        'formules pour le contrôle de la récup par rapport aux numéros de dossier colonne A
        'la comparaison se fait sur le nombre de caractères sachant qu'il y a un numéro de dossier qui ne comporte que 11 caractères
        .Cells(2, 12).FormulaArray = "=SUM(LEN(A2:A179))"
        .Cells(2, 13).Formula = "=SUMPRODUCT(LEN(SUBSTITUTE(R1:R100,"","",""""))*1)"

    End With

End Sub

Merci Theze

c'est Parfait !!!!!!

cordialement

content de t'avoir aidé

Rechercher des sujets similaires à "fiabiliser code existant"