Probleme manipulation

Bonjour,

j'ai un soucis quant à la manipulation d'excel vu que je suis encore débutant sur office.

Le problème est le suivant : je voudrais alimenter une colonne3 dans une feuille à partir d'une autre feuille qui contient les données nécessaire pour ce faire. Déjà que la feuille concerné contient deux colonnes qui me permettrais d'alimenter la colonne 3. C'est en fait des distances où la colonne 1 est le point de départ, la seconde colonne est le point d'arrivée (destination), est la fameuse colonne 3 contient le kilometrage, sachant bien que la feuille 2 contient la base de donnée des differents points de départ et d'arrivée.

J’espère que j'étais assez claire puisque ce problème me tape vraiment sur les nerfs. J'espère aussi que les solutions serait disponible le plus rapidement possible puisque, comme vous le savez, le boulot n'attends pas.

Merci beaucoup pour votre comprehension.

Bonjour,

Merci de joindre le ou les fichiers concerné(s), avec quelques lignes exemples de tes données + quelques lignes avec le résultat souhaité rempli à la main, cela sera plus simple pour te proposer quelque chose.

Cordialement,

Bonjour,

essaye de joindre un fichier exemple,

tu auras des réponses

Amicalement

Claude

Rebonjour,

Voila le fichier, j'espère que ca va aider .

Merci


Désolé pour mes posts nombreux mais voila plus de détails :

les colonnes concernés sont celles de la Feuil3, ils existent dans la Feuil2, sauf que la colonne "KM" doit être rempli à partir de Feuil 3, selon les données de Feuil2, sachant très bien que Feuil2 est mis à jour sur une certaine période.

Voila c'est tout ce qu'il y a pour le moment.

Merci à tous encore une fois.

15fichiertype.xlsx (118.96 Ko)

re,

Une solution avec RECHERCHEV

1) Supprimer les espaces parasites dans les cellules concernées (voir macro)

2) Ajouter une colonne intermédiaire (ici en "A") , qui peut être masquée,

dans cette colonne, tu concatène "Départ" et "Destination"

3) formule en colonne "H"

=RECHERCHEV(A2;Feuil3!A$2:D$2000;4;0)

pour supprimer les espaces

Sub SupprEspaces()
'--- supprime les espaces parasites en dénut et fin de cellules ---
Dim Lg&, Cel As Range
        Application.ScreenUpdating = False
        Lg = Range("a" & Rows.Count).End(xlUp).Row

    For Each Cel In Range("d2:d" & Lg) 'colonnes à régler
        Cel.Value = Trim(Cel.Value)
    Next Cel
End Sub

On doit pouvoir faire sans la colonne intermédiaire, mais c'est hors mes compétences !

Amicalement

Claude

Merci beacoup, mais le problème c'est que, dès que j'applique tous ca sur le fichier d'origine, ca me met énormement de temps pour établir les résultats, et enfin de compte ca ne marche pas, pour information, c'est la Feuil2 qui est mise à jour, elle est dynamique, ce qui dès que j'applique ca à une Feuil2 beaucoup plus grande, ca ne donne pas de résultat malheureusement.

Bonjour,

j'ai trouvé une formule, mais elle n'est pas flexible, puisqu'elle fait la recherche, mais elle suppose un tableau trié de la meme facon que celui existant dans la Feuil2. Voila je vous passe la formule :

SI(OU(EXACT(A5;'Programme de dispatching fin de'!A5:A13541));'Basa donner km System'!D599;0)

j'espère que ca va aider.

Cordialement

Bonjour,

Voila je propose un code pour la transformation sur le fichier modifer par Mr Claude, puisque l'idée qu'il a proposé est très simple :

Sub Traitement()
'Dim i As Integer
'Dim j As Integer

Dim DernLigne As Long
DernLigne = Range("A" & Rows.Count).End(xlUp).Row

i = j = 0

'MsgBox "le nombre de ligne est :" & DernLigne&
Do While i <= DernLigne
Do While j <= DernLigne
If Worksheets("Feuil2").Range("Ai").Value = Worksheets("Feuil3").Range("Aj").Value Then
Worksheets("Feuil2").Range("Hi").Value = Worksheets("Feuil3").Range("Dj").Value
Exit Do
Else
Worksheets("Feuil2").Range("Hi").Value = "Valeur introuvable"
End If
j = j + 1
Loop
i = i + 1
Loop

End Sub

J'ai une probleme au niveau de la ligne de code : " If Worksheets("Feuil2").Range("Ai").Value = Worksheets("Feuil3").Range("Aj").Value Then " , l'erreur est : l'indice n'appartient pas à la sélection (erreur9).

Merci de bien vouloir me corriger ce code afin de régler ce problème.

Cordialement

Bonsoir,

Range("Ai").Value => ne veut rien dire !

tu veux sans doute parler de

Range ("A" & i)

Amicalement

Claude

Bonjour,

désolé Claude, mais ca marche toujours pas, en fait, il s'agit certainement d'un probleme de switch entre les feuilles, puisque lorsque j'essaye de choisir la feuille de travail en tapant le code workbook.worksheets("Feuilde travail"), j'ai l'erreur, par contre, lorsqu'il s'agit de travail sur la feuille de travail, il n y a aucun probleme.

(Ceci est valable pour le bout de code qui traite le nombre de ligne pour la 2ème feuille, j'ai l'erreur 424 "objet requis").

Voila, et merci encore une fois.

Cordialement

Bonjour,

Je ne peux pas juger de ta macro (que d'ailleurs je ne comprends pas)

sans voir le fichier qui va avec.

Pourtant le problème est des plus simple avec RECHERCHEV

as-tu fait le ménage (suppression des espaces dans "Feuil3") ?

Tu devrais redimensionner les Tableaux au minimum.

Sinon j'abandonne, désolé !

Claude

Bonsoir,

d'abord, je tiens à vous remercier du fond du coeur pour ce que vous faites, ca m'aide énormement.

En ce qui concerce notre fichier, le problème que j'ai avec la formule, c'est qu'il me dit qu'il n y a pas de valeur pour certaine cellule, alors que les valeur existe, et tout ceci bien sur après suppression des espaces dans la Feuil3.

Merci mille fois.

Cordialement

Bonjour,

J'ai repris ton fichier initial,

le problème vient des tableaux 5 et 6 formatés à + de 50000 lignes,

ici, la macro supprime ces tableaux et les recrée à la fin.

Cette macro sert à faire le ménage et ne doit servir qu'une seule fois,

ensuite tu travaille normalement.

Si tu as des kilométrages avec #N/A,

c'est qu'ils n'existent pas ou orthographiés différemment dans les 2 feuilles.

Amicalement

Claude

Bonjour,

Merci Claude pour tout, vraiment merci du fond du coeur, reste un petit malaise, c'est que dès que j'applique ceci au fichier original, il me met une erreur, voila je vous envoi le fichier pour mieux comprendre parce que, a ce qui me parait, c'est le même problème qui persiste.

N.B : j'ai essayé d'ajouter le fichier mais il est très gros, alors si vous avez une proposition ??

Cordialement

re,

Ma proposition reste la même,

tu as compris la formule RECHERCHEV ?

Quelle erreur as-tu ?

combien pèse le fichier ?

as-tu vraiment besoin de liaisons externes ?

tu peux essayer ce lien pour joindre le fichier

utilise ce lien http://www.cjoint.com

édit:

as-tu bien régler le nom des feuilles ?

    Set f2 = Sheets("Feuil2")                   'à regler
    Set f3 = Sheets("Feuil3")                   'à regler

et les tableaux s'appellent bien "Tableau5" et "Tableau6"

Claude

Voila le lien pour le fichier, vous saurez mieux en regardant le problème par vos propres yeux, en plus pour ce qui est des liaisons externes, c'est juste pour la mise à jour de la Feuil2, puisque les données sont toujours renouvelées.

Merci encore une fois.

re,

3 choses qui n'allait pas,

1) renommer la 2ème feuille "Feuil2" et non "Feui2"

2) les tableaux se nomment 1 et 2 au lieu de 5 et 6

3) les en-têtes ont changés

macro corrigée et testée sans problème

Sub FormateTableau()
Dim f2 As Worksheet, f3 As Worksheet
Dim Lg2&, Lg3&, Cel As Range, T
    T = Time
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    Set f2 = Sheets("Feuil2")                   'à regler
    Set f3 = Sheets("Feuil3")                   'à regler

    With f3 '(feuille ou il y a les Km)
      If .Range("a1") <> "Concat" Then
        .ListObjects("Tableau1").Unlist         'supprime tableau5
        Lg3 = .Range("a" & Rows.Count).End(xlUp).Row
        .Range("a" & Lg3 + 2 & ":a" & Rows.Count).EntireRow.Delete
        '--- insère colonne A et concatène "départ et "desination" ---
        .Columns("a").Insert
        .Range("a1") = "Concat"
        .Range("a2:a" & Lg3) = "=b2&c2"

        '--- supprime les espaces parasites en dénut et fin de cellules ---
        For Each Cel In .Range("b2:c" & Lg3)    'colonnes à régler
            Cel = Trim(Cel)
        Next Cel
        .ListObjects.Add(xlSrcRange, .Range("$A$1:$d$" & Lg3), , xlYes).Name = _
        "Tableau1"                              'création tableau5
      End If
    End With
    '-----------------------------------
    With f2
      If .Range("a1") <> "Concat" Then
        .ListObjects("Tableau2").Unlist         'supprime tableau6
        Lg2 = .Range("a" & Rows.Count).End(xlUp).Row
        .Range("a" & Lg2 + 2 & ":a" & Rows.Count).EntireRow.Delete
        '--- insère colonne A et concatène "départ et "desination" ---
        .Columns("a").Insert
        .Range("a1") = "Concat"
        .Range("a2:a" & Lg2) = "=d2&g2"
        '--- met les formules RechercheV (Km) sur Feuil2 ---
        .Range("h2:h" & Lg2) = "=VLOOKUP(a2," & f3.Name & "!a$2:h$" & Lg3 & ",4,0)"

        '--- supprime les espaces parasites en dénut et fin de cellules ---
        For Each Cel In .Range("c2:c" & Lg2)    'colonne à régler
            Cel = Trim(Cel)
        Next Cel
        For Each Cel In .Range("f2:f" & Lg2)    'colonne à régler
            Cel = Trim(Cel)
        Next Cel
        .ListObjects.Add(xlSrcRange, .Range("$A$1:$H$" & Lg2), , xlYes).Name = _
        "Tableau2"                              'création tableau6
      End If
    End With
    Application.Calculation = xlCalculationAutomatic
    MsgBox ("temps macro = " & Format(Time - T, "hh:mm:ss"))
End Sub

restera à voir les #N/A, vérifier l'existence ou l'orthographe

Claude

Bonjour,

Merci beaucoup Claude, votre aide m'était vraiment précieuse, j'espère vous rendre l’ascenseur un jour.

Cependant, il y a un autre petit souci à propos de ces données, parce que lorsque j'essaye d'établir un tableau croisé dynamique, et je met les KM en donnée, le tableau me donne des valeurs autres que celles qui existent dans la Feuil2, que des 6, des 8, etc......, c'est la dernière chose que je demanderais sur ce sujet, je vous assure.

Merci beaucoup pour votre grande compréhensibilité.

Cordialement.

Bonjour,

Je ne sais pas utiliser les TCD,

tu devrais ouvrir un autre poste pour régler ce problème.

Amicalement

Claude

Merci beaucoup Claude, je n'oublierais pas votre aide.

Cordialement

Rechercher des sujets similaires à "probleme manipulation"