• Initiateur de la discussion Initiateur de la discussion Anabelle
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

Anabelle

Guest
Bonjour,

voici pourquoi j'ai besoin de vous:
je développe deux matrices, chacune sur 1 feuille, même fichier.

Dans la première matrice se trouvent une colonne info1, info 2, info 3.
Dans la seconde matrice se trouvent une colonne info 1 (identique à celle de la feuille 1), info 2bis, info 3bis.

1) Lorsque je rentre l'info 1 sur la feuille 1, j'aimerais que la colonne info 1 de la feuille 2 soit rentrée automatiquement.
2) Lorsque j'effectue un changement sur les lignes de la feuille 1 (par exemple tri croissant ou décroissant), j'aimerais que l'ensemble de la ligne se situant en feuille 2 change et non pas seulement la colonne info 1.

Je joins une matrice pouvant être utilisée pour résoudre ce problème.

Je vous remercie de l'aide que vous m'apporterez,
Cdt Anabelle
 

Pièces jointes

Re : verrouillage ligne

Bonjour Anabelle, bienvenue sur XLD,

Désolé du retard, je n'avais pas vu votre post...

Voyez le fichier joint.

Pour voir les codes des macros, touches Alt+F11 puis double-cliquez en haut à gauche sur les feuilles suivantes :

- Module 1 :

Code:
Public derlig As Long, tablo1, tablo2 'mémorise les variables

- ThisWorkbook :

Code:
Private Sub Workbook_Open()
With Sheets("Feuil2")
  derlig = .Range("B65536").End(xlUp).Row
  tablo1 = Application.Transpose(.Range("B3:B" & derlig))
  tablo2 = .Range("C3:D" & derlig)
End With
End Sub

- Feuil2 :

Code:
Private Sub Worksheet_Activate()
Dim i
Application.ScreenUpdating = False
Sheets("Feuil1").[B3:D65536].Copy [B3]
[C3:D65536].ClearContents
derlig = [B65536].End(xlUp).Row
For lig = 2 To derlig
  i = Application.Match(Cells(lig, "B"), tablo1, 0)
  If IsNumeric(i) Then
    Cells(lig, "C") = tablo2(i, 1): Cells(lig, "D") = tablo2(i, 2)
  End If
Next
tablo1 = Application.Transpose(Range("B3:B" & derlig))
tablo2 = Range("C3:D" & derlig)
End Sub

Attention : si vous copiez ces macros dans un autre fichier, n'activez pas la Feuil2, enregistrez et fermez d'abord le fichier, puis rouvrez-le.

A+
 

Pièces jointes

Re : verrouillage ligne

Bonsoir Anabelle,

J'ai été cherché midi à quatorze heures.

Effacez tous les codes, et mettez uniquement dans le code de Feuil2 :

Code:
Private Sub Worksheet_Activate()
Dim derlig As Long, tablo1, tablo2, lig As Long, i
Application.ScreenUpdating = False
derlig = [B65536].End(xlUp).Row
tablo1 = Application.Transpose(Range("B3:B" & derlig))
tablo2 = Range("C3:D" & derlig)
Sheets("Feuil1").[B3:D65536].Copy [B3]
[C3:D65536].ClearContents
For lig = 3 To [B65536].End(xlUp).Row
  i = Application.Match(Cells(lig, "B"), tablo1, 0)
  If IsNumeric(i) Then
    Cells(lig, "C") = tablo2(i, 1): Cells(lig, "D") = tablo2(i, 2)
  End If
Next
End Sub

Fichier (2) joint.

A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Tableau
Réponses
5
Affichages
286
  • Question Question
XL 2019 fonction
Réponses
2
Affichages
195
Retour