Lier 2 tableaux dans les 2 sens

Bonjour et bon lundi à tous

Voila j'ai un tableau + 1 suivi de ce dernier :

Le tableau se remplit avec 2 listes deroulante

Le suivi lui se complete a chaque fois quand je coche les cases de mon tableau

Ce que je voudrai faire c'est que la feuille SUIVI puisse egalement remplir mon tableau (en entrant un etat dans la Colonne ETAT)

En gros je veux pouvoir remplir mon tableau dans les 2 sens:

  • Soi depuis la page tableau avec mes listes deroulante
  • Soi a partir de mon suivi en entrant : "done" , "planned","not yet" dans la colonne "ETAT"

Je pensai a la fonction =RECHERCHE mais vue que la feuille SUIVI se met a jour à chaque fois que je rempli le tableau je sais pas comment l'utiliser

19exemple-v1.xlsm (26.58 Ko)

Bonjour,

Il suffit de rajouter la macro suivante dans la feuille suivit

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C:C")) Is Nothing Then
Dim lig As Range
Dim cel As Range
Dim col As Range
Set cel = Target.Offset(0, -2)
If cel Is Nothing Then
Set cel = Range(cel).End(xlUp)
End If
Set col = Sheets("Hoja1").Cells.Find(Target.Offset(0, -1).Value)
Set lig = Sheets("Hoja1").Range("B:B").Cells.Find(cel)
Sheets("Hoja1").Cells(lig.Row, col.Column).Value = Target.Value
End If
End Sub

Voici le fichier

Cordialement

26exemple-v1.xlsm (29.36 Ko)

J'ai l'erreur 1004 J'ai un Excel Espagnol je sais pas si ça joue

re,

Dans ce cas, essayez d'enlever les guillemest dans chaque code sheets("Hoja1")

si ça ne fonctionne toujours pas remplacez "Hoja1" par un chiffre (1 pour la feuille 1, 2 pour la feuille 2 ...)

Cordialement

Re,

Par contre, si l'erreur arrive lorsque vous utilisez le formulaire, placer le code suivant avant userform2.show

Application.EnableEvents = True

et après userform2.show

Application.EnableEvents = False

Voici le fichier

Cordialement

16exemple-v2.xlsm (29.75 Ko)

D'accord merci je test ça

EDIT :

Il y a juste un soucis de ligne quand j'ecris Done par exemple ça m'écris une ligne en dessous a partir de la 2eme colonne ID 02, mais je pensé trouver l'erreur je te tiens au courant

Re

Alors voila je n'arrive pas a faire la modification :

Lorsque je vais dans la Feuille SUIVI et ecrisquelque chose dans la case soulignée en Rouge il faudrait que cela se retrouve dans la 1ere page Excel, dans la case bleu et non dans celle rouge

6exemple-v20.xlsm (24.66 Ko)

Re,

Voici votre fichier retourné

Cordialement

31exemple-v20-1.xlsm (25.72 Ko)

Ça marche super bien. Peux-tu me dire ce que tu as changé ?

EDIT : ok j'ai vue la dif je dois la comprend maintenant

Re,

Premièrement, j'ai retiré les ligne de codes application.enableevents car ça pose problème en cas de plantage

Dans le code que j'ai créé, j'ai remarqué que la recherche de la ligne posait problème (je recherchait une addresse de cellule au lieu de rechercher du texte (dans la procédure find)

J'ai donc déclaré une nouvelle variable "txt" afin de retrouver le numéro de l'ID (comme il y avait des trous, c'était plus compliqué)

Comme c'étatit une chaine de texte qui était recherché tout est rentré dans l'ordre.

Ci dessous le détails de la procédure:

Private Sub Worksheet_Change(ByVal Target As Range)
'déclenchement de la procédure lorsque la plage change
If Not Intersect(Target, Range("C:C")) Is Nothing Then 'ici, je précise la plage mais on peut mettre la feuille entière
'déclaration des différentes variables
Dim lig As Range
Dim cel As Range
Dim txt As String
Dim col As Range
'ici, c'est à cause du formulaire --> si le nombre de cellules modifiées en même temps est supérieur à 1 alors ...
    If Target.Count > 1 Then
    Exit Sub 'sortir de la procédure
    Else 'sinon
Set cel = Target.Offset(0, -2)
txt = Range("a" & Target.Row) 'txt prend la valeur de l'ID (colonne A, ligne de la cellule modifiée)
If txt = "" Then 'si txt est vide alors -->c'est qu'il y a des trous
txt = Range("a" & Target.Row).End(xlUp) 'on remonte jusqu'a la première cellule non vide de la colonne A (au dessus de la ligne de la cellule modifiée)
End If
Set col = Sheets("Hoja1").Cells.Find(Target.Offset(0, -1).Value) 'dans la feuille "Hoja1", on recherche la colonne qui correspond à l'ID de la cellule modifiée
Set lig = Sheets("Hoja1").Range("B:B").Cells.Find(txt) 'dans la feuille "Hoja1", on recherche la lignequi correspond au numéro de l'ID de la cellule modifiée
Sheets("Hoja1").Cells(lig.Row, col.Column).Value = Target.Value 'on remplace la valeur à l'intersection de la ligne et de la colonne
    End If
End If
End Sub

Si mes explications ne sont pas claires, n'hésite pas à me redemander

Cordialement

Merci pour tous ces explications je comprends un peu mieux

Ps : Cette ligne reste encore confuse pour moi, les coordonnées correspondes a quoi ?

Set cel = Target.Offset(0, -2)

txt = Range("a" & Target.Row).End(xlUp)

txt est une variable

la mettre en première position suivit d'un égal veut dire qu'on lui affecte une valeur

la valeur est : range("a" --> dans la colonne A

& target.row --> ligne de la cellule modifiée (la cellule modifiée est définie par la variable target)

.End(XLup) --> littéralement : remonter à la fin vers le haut

c'est l'équivalent d'un Ctrl+fléche (haut dant ce cas mais la procédure est identique dans n'importe quelle direction : bas, gauche, droite)

cette ligne de code est incroyablement utile. On la retrouve très souvent.

Cordialement

Merci beaucoup pour ton aide

J'en apprend beaucoup à chaque fois Merci

De rien, c'est un forum donc entraide et solidarité en sont les bases

Rechercher des sujets similaires à "lier tableaux sens"