Besoin d'aide svp VBA

boobly

XLDnaute Nouveau
Bonjour a vous!
j'ai un gros souci. Jai 2 feuilles dans mon classeur. j'aimerais que lorsque j'entre par exemple une valeur dans la cellule L8 de la 1er feuille, que l'on me renvoie la valeur de la cellule A8 dans n'importe quelle cellule de la feuille 2. Jesper que vous me comprendriez et que vous m'aiderez.
Merci, cordialement.......
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir boobly, sylvanu,

Voici ton fichier modifié.

Sur la feuille "repertoire", tableau vide : aucune donnée

Sur "Feuil1", tableau avec Noms uniquement

En G6, saisis par exemple 20 ➯ ton 2ème tableau se remplit
comme tu veux, avec "MODIFpierre" en A9. :)

soan
 

Pièces jointes

  • Classeur1.xlsm
    16.9 KB · Affichages: 6

boobly

XLDnaute Nouveau
Bonsoir boobly, sylvanu,

Voici ton fichier modifié.

Sur la feuille "repertoire", tableau vide : aucune donnée

Sur "Feuil1", tableau avec Noms uniquement

En G6, saisis par exemple 20 ➯ ton 2ème tableau se remplit
comme tu veux, avec "MODIFpierre" en A9. :)

soan
et si je veux que le code marche simultanément sur la colonne sortie aussi, comment dois je faire? genre on entre un chiffre en G6 sur la feuille1 sa affiche modifpierre en A9
et ensuite on entre en H6 un chiffre dans la feuille1 et sa affiche modifpierre egalement! c'est exactement le code que tu m'as donner mais jveux qu'il marche sur les 2 en même temps! merci deja de prendre le temps de me rpondre
 

boobly

XLDnaute Nouveau
et si je veux que le code marche simultanément sur la colonne sortie aussi, comment dois je faire? genre on entre un chiffre en G6 sur la feuille1 sa affiche modifpierre en A9
et ensuite on entre en H6 un chiffre dans la feuille1 et sa affiche modifpierre egalement! c'est exactement le code que tu m'as donner mais jveux qu'il marche sur les 2 en même temps! merci deja de prendre le temps de me rpondre
c'est bon j'ai trouver
jvous remercie
 

soan

XLDnaute Barbatruc
Inactif
Bonjour boobly,

Je ne t'ai pas répondu car j'étais absent. ;)

Je mets ici le code VBA de mon 1er fichier :
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Nom$
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Column <> 7 Then Exit Sub
    If .Row < 6 Then Exit Sub
    If .Value = "" Then Exit Sub
    Nom = .Offset(, -6)
  End With
  With Worksheets("repertoire").ListObjects("repertoire").ListRows.Add
    .Range(1) = "MODIF" & Nom
    .Range(2) = Application.UserName
    .Range(3) = Now
  End With
End Sub
Pour ta 2ème demande, c'est bien que tu aies trouvé la solution ;
comme tu n'as pas indiqué comment tu as fait, je mets ici ma
solution ; code VBA, à comparer avec le code ci-dessus :

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Nom$, k&
  With Target
    If .CountLarge > 1 Then Exit Sub
    k = .Column: If k < 7 Or k > 8 Then Exit Sub
    k = .Row: If k < 6 Then Exit Sub
    If .Value = "" Then Exit Sub
    Nom = Cells(k, 1)
  End With
  With Worksheets("repertoire").ListObjects("repertoire").ListRows.Add
    .Range(1) = "MODIF" & Nom
    .Range(2) = Application.UserName
    .Range(3) = Now
  End With
End Sub
Au cas où ta solution est plus simple que la mienne,
n'hésite pas à la poster ci-dessous ! ;)


soan
 

Pièces jointes

  • Classeur1.xlsm
    17.1 KB · Affichages: 2

boobly

XLDnaute Nouveau
Bonjour boobly,

Je ne t'ai pas répondu car j'étais absent. ;)

Je mets ici le code VBA de mon 1er fichier :
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Nom$
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Column <> 7 Then Exit Sub
    If .Row < 6 Then Exit Sub
    If .Value = "" Then Exit Sub
    Nom = .Offset(, -6)
  End With
  With Worksheets("repertoire").ListObjects("repertoire").ListRows.Add
    .Range(1) = "MODIF" & Nom
    .Range(2) = Application.UserName
    .Range(3) = Now
  End With
End Sub
Pour ta 2ème demande, c'est bien que tu aies trouvé la solution ;
comme tu n'as pas indiqué comment tu as fait, je mets ici ma
solution ; code VBA, à comparer avec le code ci-dessus :

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Nom$, k&
  With Target
    If .CountLarge > 1 Then Exit Sub
    k = .Column: If k < 7 Or k > 8 Then Exit Sub
    k = .Row: If k < 6 Then Exit Sub
    If .Value = "" Then Exit Sub
    Nom = Cells(k, 1)
  End With
  With Worksheets("repertoire").ListObjects("repertoire").ListRows.Add
    .Range(1) = "MODIF" & Nom
    .Range(2) = Application.UserName
    .Range(3) = Now
  End With
End Sub
Au cas où ta solution est plus simple que la mienne,
n'hésite pas à la poster ci-dessous ! ;)


soan
[/
Bonjour boobly,

Je ne t'ai pas répondu car j'étais absent. ;)

Je mets ici le code VBA de mon 1er fichier :
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Nom$
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Column <> 7 Then Exit Sub
    If .Row < 6 Then Exit Sub
    If .Value = "" Then Exit Sub
    Nom = .Offset(, -6)
  End With
  With Worksheets("repertoire").ListObjects("repertoire").ListRows.Add
    .Range(1) = "MODIF" & Nom
    .Range(2) = Application.UserName
    .Range(3) = Now
  End With
End Sub
Pour ta 2ème demande, c'est bien que tu aies trouvé la solution ;
comme tu n'as pas indiqué comment tu as fait, je mets ici ma
solution ; code VBA, à comparer avec le code ci-dessus :

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Nom$, k&
  With Target
    If .CountLarge > 1 Then Exit Sub
    k = .Column: If k < 7 Or k > 8 Then Exit Sub
    k = .Row: If k < 6 Then Exit Sub
    If .Value = "" Then Exit Sub
    Nom = Cells(k, 1)
  End With
  With Worksheets("repertoire").ListObjects("repertoire").ListRows.Add
    .Range(1) = "MODIF" & Nom
    .Range(2) = Application.UserName
    .Range(3) = Now
  End With
End Sub
Au cas où ta solution est plus simple que la mienne,
n'hésite pas à la poster ci-dessous ! ;)


soan
deja jte remercie de prendre le temps d'me rpondre vraimt et d'essayer de resoudre mon probleme!! je t'avoue que j'ai un peu tricher hein, ma façon de faire a plutot etait simple
 

Pièces jointes

  • Classeur1.xlsm
    18.4 KB · Affichages: 4

boobly

XLDnaute Nouveau
Bonjour boobly,

Je ne t'ai pas répondu car j'étais absent. ;)

Je mets ici le code VBA de mon 1er fichier :
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Nom$
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Column <> 7 Then Exit Sub
    If .Row < 6 Then Exit Sub
    If .Value = "" Then Exit Sub
    Nom = .Offset(, -6)
  End With
  With Worksheets("repertoire").ListObjects("repertoire").ListRows.Add
    .Range(1) = "MODIF" & Nom
    .Range(2) = Application.UserName
    .Range(3) = Now
  End With
End Sub
Pour ta 2ème demande, c'est bien que tu aies trouvé la solution ;
comme tu n'as pas indiqué comment tu as fait, je mets ici ma
solution ; code VBA, à comparer avec le code ci-dessus :

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Nom$, k&
  With Target
    If .CountLarge > 1 Then Exit Sub
    k = .Column: If k < 7 Or k > 8 Then Exit Sub
    k = .Row: If k < 6 Then Exit Sub
    If .Value = "" Then Exit Sub
    Nom = Cells(k, 1)
  End With
  With Worksheets("repertoire").ListObjects("repertoire").ListRows.Add
    .Range(1) = "MODIF" & Nom
    .Range(2) = Application.UserName
    .Range(3) = Now
  End With
End Sub
Au cas où ta solution est plus simple que la mienne,
n'hésite pas à la poster ci-dessous ! ;)


soan
merci bcp il marche super bien
 
Dernière édition:

boobly

XLDnaute Nouveau
deja jte remercie de prendre le temps d'me rpondre vraimt et d'essayer de resoudre mon probleme!! je t'avoue que j'ai un peu tricher hein, ma façon de faire a plutot etait simple
j'ai une derniere requette a te demander stp, et si maintenant jveux associer le tout avc la colonne C? dans le fichier que jai poster tout a lheure dans lequel jvoulais te montrer la methode que javais utilisé, jai remplit ma colonne C, et je voudrais que lorsque j'entre des valeurs coe dans les cas precedement par exemple en H6 coe dans le ficher que jviens de t'envoyer, sa me donne coe reponse ´´MODIFpierreA ( jpense que tu comprendras si tu jetes un coup d'oeil a mon fichier poster ojrdui) merci encr pour tout
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir boobly,

Désolé, j'étais encore absent ; j'ai dû régler de gros problèmes administratifs, longs et
interminables ; même si ce n'est pas encore fini, c'est en bonne voie d'amélioration ;
enfin, j'espère ; je croise les doigts !

J'ai vu la solution du fichier de ton post #10 ; j'ai failli te répondre : « Non, ça ne peut pas
marcher si tu utilises Nom = .Offset(, -7) car c'est parfois à partir de la colonne "Entrées",
et parfois à partir de la colonne "Sorties" » ; c'est alors que j'ai vu comment tu as triché :
en rajoutant la colonne B (très étroite), où tu as recopié les Noms de la colonne A ; c'est
pas mal joué, petit finaud ! ;) mais ce n'est quand même pas une bonne solution, car
ça t'oblige à dupliquer inutilement les noms ; comme tu as utilisé cette formule :
=Tableau1[[#Cette ligne];[Noms]] il n'y a pas de risque d'erreur de recopie des noms,
mais ça prends quand même une place en double pour les Noms.

Si tu regardes ma solution, j'ai utilisé Nom = Cells(k, 1) à la place de Nom = .Offset(, -6) ;
y'a plus de .Offset() ➯ ça marche pour les 2 colonnes "Entrées" et "Sorties" ; et je viens de
m'apercevoir de ceci : comme c'est devenu indépendant du Target, j'aurais dû supprimer
la variable Nom$, et mettre directement : .Range(1) = "MODIF" & Cells(k, 1)
; d'où le
code VBA suivant (à la place du précédent) :
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim k&
  With Target
    If .CountLarge > 1 Then Exit Sub
    k = .Column: If k < 7 Or k > 8 Then Exit Sub
    k = .Row: If k < 6 Then Exit Sub
    If .Value = "" Then Exit Sub
  End With
  With Worksheets("repertoire").ListObjects("repertoire").ListRows.Add
    .Range(1) = "MODIF" & Cells(k, 1)
    .Range(2) = Application.UserName
    .Range(3) = Now
  End With
End Sub
soan
 

boobly

XLDnaute Nouveau
okay merci enc
Bonsoir boobly,

Désolé, j'étais encore absent ; j'ai dû régler de gros problèmes administratifs, longs et
interminables ; même si ce n'est pas encore fini, c'est en bonne voie d'amélioration ;
enfin, j'espère ; je croise les doigts !

J'ai vu la solution du fichier de ton post #10 ; j'ai failli te répondre : « Non, ça ne peut pas
marcher si tu utilises Nom = .Offset(, -7) car c'est parfois à partir de la colonne "Entrées",
et parfois à partir de la colonne "Sorties" » ; c'est alors que j'ai vu comment tu as triché :
en rajoutant la colonne B (très étroite), où tu as recopié les Noms de la colonne A ; c'est
pas mal joué, petit finaud ! ;) mais ce n'est quand même pas une bonne solution, car
ça t'oblige à dupliquer inutilement les noms ; comme tu as utilisé cette formule :
=Tableau1[[#Cette ligne];[Noms]] il n'y a pas de risque d'erreur de recopie des noms,
mais ça prends quand même une place en double pour les Noms.

Si tu regardes ma solution, j'ai utilisé Nom = Cells(k, 1) à la place de Nom = .Offset(, -6) ;
y'a plus de .Offset() ➯ ça marche pour les 2 colonnes "Entrées" et "Sorties" ; et je viens de
m'apercevoir de ceci : comme c'est devenu indépendant du Target, j'aurais dû supprimer
la variable Nom$, et mettre directement : .Range(1) = "MODIF" & Cells(k, 1)
; d'où le
code VBA suivant (à la place du précédent) :
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim k&
  With Target
    If .CountLarge > 1 Then Exit Sub
    k = .Column: If k < 7 Or k > 8 Then Exit Sub
    k = .Row: If k < 6 Then Exit Sub
    If .Value = "" Then Exit Sub
  End With
  With Worksheets("repertoire").ListObjects("repertoire").ListRows.Add
    .Range(1) = "MODIF" & Cells(k, 1)
    .Range(2) = Application.UserName
    .Range(3) = Now
  End With
End Sub
soan
okay mercie encr Soan, jai essayer le precedant et sa marche! jvais le remplacer pas celui ci
 

soan

XLDnaute Barbatruc
Inactif
@boobly

On s'est croisés ! ;)

Pour répondre à la demande de ton post #12, j'ai seulement ajouté & Cells(k ,2) :
VB:
.Range(1) = "MODIF" & Cells(k, 1) & Cells(k, 2)
(à partir de mon fichier de départ, corrigé selon mon post #13)

Nouveau code VBA (complet) :

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim k&
  With Target
    If .CountLarge > 1 Then Exit Sub
    k = .Column: If k < 7 Or k > 8 Then Exit Sub
    k = .Row: If k < 6 Then Exit Sub
    If .Value = "" Then Exit Sub
  End With
  With Worksheets("repertoire").ListObjects("repertoire").ListRows.Add
    .Range(1) = "MODIF" & Cells(k, 1) & Cells(k, 2)
    .Range(2) = Application.UserName
    .Range(3) = Now
  End With
End Sub
Regarde aussi le fichier joint. :)

soan
 

Pièces jointes

  • Classeur2.xlsm
    17.2 KB · Affichages: 3

Discussions similaires

Réponses
1
Affichages
96
Réponses
7
Affichages
179

Statistiques des forums

Discussions
312 104
Messages
2 085 344
Membres
102 865
dernier inscrit
FreyaSalander