Programme VBA
Résolu
Alex
-
Alex -
Alex -
Bonjour à tous,
Je débute tout juste dans le VBA pour le projet que je suis en train de faire, et sur lequel je galère depuis maintenant une semaine. Je vous expose donc mon problème :
J'ai un fichier excel qui contient un tableau dont les informations, situées en ligne, étant N° de demande, société, adresse, téléphone, N° d'affaire, etc.. Lorsque l'on remplit le tableau, chaque ligne correspondra donc à une nouvelle demande avec les informations sur cette demande.
L'objectif de mon programme est que, dès qu'un nouveau numéro de demande est tapée dans une ligne de la colonne N° de demande, un fichier référence(inclut en masqué dans le classeur) s'ouvre automatiquement avec le nom de ce numéro de demande : Fiche N°... (partie déjà réalisé avec une procédure Worksheet_change). Puis, au fur et à mesure que l'utilisateur complète les cellules suivantes de la ligne, ces informations sont automatiquement complétées dans le fichier référence ouvert dans les cellules appropriées.
J'espère mettre bien fait comprendre.
Pouvez vous donc me donner des pistes ou me dire de quelle manière procéder pour atteindre cet objectif?
Merci d'avance
Je débute tout juste dans le VBA pour le projet que je suis en train de faire, et sur lequel je galère depuis maintenant une semaine. Je vous expose donc mon problème :
J'ai un fichier excel qui contient un tableau dont les informations, situées en ligne, étant N° de demande, société, adresse, téléphone, N° d'affaire, etc.. Lorsque l'on remplit le tableau, chaque ligne correspondra donc à une nouvelle demande avec les informations sur cette demande.
L'objectif de mon programme est que, dès qu'un nouveau numéro de demande est tapée dans une ligne de la colonne N° de demande, un fichier référence(inclut en masqué dans le classeur) s'ouvre automatiquement avec le nom de ce numéro de demande : Fiche N°... (partie déjà réalisé avec une procédure Worksheet_change). Puis, au fur et à mesure que l'utilisateur complète les cellules suivantes de la ligne, ces informations sont automatiquement complétées dans le fichier référence ouvert dans les cellules appropriées.
J'espère mettre bien fait comprendre.
Pouvez vous donc me donner des pistes ou me dire de quelle manière procéder pour atteindre cet objectif?
Merci d'avance
A voir également:
- Programme VBA
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
16 réponses
bonjour,
je ne suis pas sûre d'avoir tout compris.
Mais pour qu'une feuille soit égale à une valeur d'une autre feuille, le code est :
Sheets("Feuil1").cells(1,1) = sheets("Feuil2").cells(3,4)
'==> ce qui signifie que la cellule de la feuille 1 de la ligne 1 colonne 1 est égal à la cellule de la ligne 3 colonne 4 de la feuille 2.
'si ton nom de feuille pas de pb :
Sheets(a).cells(1,1) = sheets("Feuil2").cells(3,4)
'a est une variable et contient le nom de la feuille
je ne suis pas sûre d'avoir tout compris.
Mais pour qu'une feuille soit égale à une valeur d'une autre feuille, le code est :
Sheets("Feuil1").cells(1,1) = sheets("Feuil2").cells(3,4)
'==> ce qui signifie que la cellule de la feuille 1 de la ligne 1 colonne 1 est égal à la cellule de la ligne 3 colonne 4 de la feuille 2.
'si ton nom de feuille pas de pb :
Sheets(a).cells(1,1) = sheets("Feuil2").cells(3,4)
'a est une variable et contient le nom de la feuille
Merci de ta réponse,
Oui mais je voudrais trouver un système pour que en gros à chaque fois qu'une cellule est modifiée dans ma première feuille, le fichier se mette à jour afin que l'information qui vient d'être inscrite dans cette cellule se remplisse dans la seconde feuille grâce à ce que tu viens de donner.
Oui mais je voudrais trouver un système pour que en gros à chaque fois qu'une cellule est modifiée dans ma première feuille, le fichier se mette à jour afin que l'information qui vient d'être inscrite dans cette cellule se remplisse dans la seconde feuille grâce à ce que tu viens de donner.
difficile de comprendre, mais utilise et adaptes ce code :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Feuil1").Cells(Target.Row, Target.Column) = ActiveSheet.Cells(Target.Row, Target.Column)
End Sub
Voici ce que fait ce code :
disons que tu as mis ce code dans une feuille nommée ABC
disons que tu modifies la cellule B4
Alors la cellule B4 de la feuille 1 sera égal à la cellule B4 de la feuille2.
target : signifie la cellule que tu as modifié
target.row : permet de récupérer le numéro de ligne de la cellule que tu modifies
target.column : le numéro de colonne.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Feuil1").Cells(Target.Row, Target.Column) = ActiveSheet.Cells(Target.Row, Target.Column)
End Sub
Voici ce que fait ce code :
disons que tu as mis ce code dans une feuille nommée ABC
disons que tu modifies la cellule B4
Alors la cellule B4 de la feuille 1 sera égal à la cellule B4 de la feuille2.
target : signifie la cellule que tu as modifié
target.row : permet de récupérer le numéro de ligne de la cellule que tu modifies
target.column : le numéro de colonne.
Est-il possible d'utiliser ce code avec par exemple des Offset etc...? Je ne peux donner dans mon programme de cellule exacte puisque celà dépend quelle cellule va utiliser l'utilisateur. En gros s'il utilise la cellule A5, il faudra retranscrire le contenu de A5 puis le contenu de toute la ligne correspondante (B5,C5,D5,etc..) dans une autre feuille.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
la transcription que tu indiques :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
if target.Row = 5 and Target.column = 1 then
Sheets("Feuille origine").Rows(target.row).Copy Sheets("Feuille destinataire").Rows(target.row)
end if
End Sub
==> la macro précédente indique que si la cellule modifiée est la ligne 5 (target.row=5) et colonne A (target.column =1)
alors tu copies la ligne 5 de la feuille origine (Sheets("Feuille origine").Rows(target.row).Copy ) pour la coller dans la ligne 5 de la feuille destinataire Sheets("Feuille destinataire").Rows(target.row)
Maintenant, si dès que tu modifies une cellule, faut recopier la ligne :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Feuille origine").Rows(target.row).Copy Sheets("Feuille destinataire").Rows(target.row)
End Sub
Dès que tu modifies une cellule, la ligne entière sera copiée.
Il faudrait que tu me dises exactement et précisément ce que tu veux faire parce que je ne suis plus sûre de savoir ce que tu veux et du coup, je te donnes du code mais qui ne te convient pas.
la transcription que tu indiques :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
if target.Row = 5 and Target.column = 1 then
Sheets("Feuille origine").Rows(target.row).Copy Sheets("Feuille destinataire").Rows(target.row)
end if
End Sub
==> la macro précédente indique que si la cellule modifiée est la ligne 5 (target.row=5) et colonne A (target.column =1)
alors tu copies la ligne 5 de la feuille origine (Sheets("Feuille origine").Rows(target.row).Copy ) pour la coller dans la ligne 5 de la feuille destinataire Sheets("Feuille destinataire").Rows(target.row)
Maintenant, si dès que tu modifies une cellule, faut recopier la ligne :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Feuille origine").Rows(target.row).Copy Sheets("Feuille destinataire").Rows(target.row)
End Sub
Dès que tu modifies une cellule, la ligne entière sera copiée.
Il faudrait que tu me dises exactement et précisément ce que tu veux faire parce que je ne suis plus sûre de savoir ce que tu veux et du coup, je te donnes du code mais qui ne te convient pas.
Je ne sais pas comment t'envoyer mon fichier excel, je suis parti sur un autre code au final, j'espère qu'il te fera comprendre ce que je fais :
'Lorsque un nombre est entré dans une cellule de la colonne des N° de demandes, une FIT s'ouvre automatiquement avec le N° de demande correspondant.
'Au fur et à mesure que les informations sont entrées manuellement dans le tableau, la FIT se remplie.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim Contact As String
Dim Société As String
Dim Adresse As String
Dim Téléphone As String
Dim DemandéPar As String
Dim ChargéA As String
Dim Echéances As String
Dim Statut As String
Dim Affaire As String
Dim KeyCells2 As Range
Dim KeyCells3 As Range
Dim KeyCells4 As Range
Dim KeyCells5 As Range
Dim KeyCells6 As Range
Dim KeyCells7 As Range
Dim KeyCells8 As Range
Dim KeyCells9 As Range
Dim KeyCells10 As Range
Dim Valeur As String 'La variable Valeur va contenir le nombre que l'on tape dans la cellule utilisée de la colonne N°de demande.
Dim KeyCells As Range 'La variable KeyCells définie les cellules pour lesquelles l'ouverture d'une FIT référence se déclenchera.
Set KeyCells = Range("A3:A203")
Valeur = Target.Value
If Valeur = "" Then
End If
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
Call Ouverture_FIT(Valeur)
'Si la valeur contenue dans l'une des KeyCells est modifiée, et différente du vide, on apelle la procédure Ouverture_FIT.
Else:
End If
Set KeyCells2 = KeyCells.Offset(0, 1)
Contact = Target.Value
If Contact = "" Then
End If
If Not Application.Intersect(KeyCells2, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
Set KeyCells3 = KeyCells.Offset(0, 2)
Société = Target.Value
If Société = "" Then
End If
If Not Application.Intersect(KeyCells3, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
Set KeyCells4 = KeyCells.Offset(0, 3)
Adresse = Target.Value
If Adresse = "" Then
End If
If Not Application.Intersect(KeyCells4, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
Set KeyCells5 = KeyCells.Offset(0, 4)
Téléphone = Target.Value
If Téléphone = "" Then
End If
If Not Application.Intersect(KeyCells5, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
Set KeyCells6 = KeyCells.Offset(0, 5)
DemandéPar = Target.Value
If DemandéPar = "" Then
End If
If Not Application.Intersect(KeyCells6, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
Set KeyCells7 = KeyCells.Offset(0, 6)
ChargéA = Target.Value
If ChargéA = "" Then
End If
If Not Application.Intersect(KeyCells7, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
Set KeyCells8 = KeyCells.Offset(0, 7)
Echéances = Target.Value
If Echéances = "" Then
End If
If Not Application.Intersect(KeyCells8, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
Set KeyCells10 = KeyCells.Offset(0, 9)
Affaire = Target.Value
If Affaire = "" Then
End If
If Not Application.Intersect(KeyCells10, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
End Sub
Sub Ouverture_FIT(ByVal Valeur As String)
Sheets("FIT").Visible = True
Sheets("FIT").Copy Before:=Sheets(1)
Sheets("FIT").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("FIT (2)").Name = "FIT N°demande " & Valeur
Sheets("FIT N°demande " & Valeur).Range("I17").Value = Valeur
'Ouvre une FIT à partir de la FIT référence cachée et y remplit le numéro de demande.
End Sub
Sub Remplissage_FIT(ByVal Valeur As String, ByVal Contact As String, ByVal Société As String, ByVal Adresse As String, ByVal Téléphone As String, ByVal DemandéPar As String, ByVal Affaire As String, ByVal ChargéA As String, ByVal Echéances As String)
Sheets("FIT N°demande " & Valeur).Range("D16").Value = Contact
Sheets("FIT N°demande " & Valeur).Range("D18").Value = Société
Sheets("FIT N°demande " & Valeur).Range("D20").Value = Adresse
Sheets("FIT N°demande " & Valeur).Range("D22").Value = Téléphone
Sheets("FIT N°demande " & Valeur).Range("I15").Value = DemandéPar
Sheets("FIT N°demande " & Valeur).Range("I21").Value = ChargéA
Sheets("FIT N°demande " & Valeur).Range("I23").Value = Echéances
Sheets("FIT N°demande " & Valeur).Range("I19").Value = Affaire
End Sub
J'ai avec ce code un nouveau problème puisque j'ai l'erreur d'éxecution 9 "l'indice n'appartient pas à la sélection à la ligne que j'ai mis en gras
'Lorsque un nombre est entré dans une cellule de la colonne des N° de demandes, une FIT s'ouvre automatiquement avec le N° de demande correspondant.
'Au fur et à mesure que les informations sont entrées manuellement dans le tableau, la FIT se remplie.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim Contact As String
Dim Société As String
Dim Adresse As String
Dim Téléphone As String
Dim DemandéPar As String
Dim ChargéA As String
Dim Echéances As String
Dim Statut As String
Dim Affaire As String
Dim KeyCells2 As Range
Dim KeyCells3 As Range
Dim KeyCells4 As Range
Dim KeyCells5 As Range
Dim KeyCells6 As Range
Dim KeyCells7 As Range
Dim KeyCells8 As Range
Dim KeyCells9 As Range
Dim KeyCells10 As Range
Dim Valeur As String 'La variable Valeur va contenir le nombre que l'on tape dans la cellule utilisée de la colonne N°de demande.
Dim KeyCells As Range 'La variable KeyCells définie les cellules pour lesquelles l'ouverture d'une FIT référence se déclenchera.
Set KeyCells = Range("A3:A203")
Valeur = Target.Value
If Valeur = "" Then
End If
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
Call Ouverture_FIT(Valeur)
'Si la valeur contenue dans l'une des KeyCells est modifiée, et différente du vide, on apelle la procédure Ouverture_FIT.
Else:
End If
Set KeyCells2 = KeyCells.Offset(0, 1)
Contact = Target.Value
If Contact = "" Then
End If
If Not Application.Intersect(KeyCells2, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
Set KeyCells3 = KeyCells.Offset(0, 2)
Société = Target.Value
If Société = "" Then
End If
If Not Application.Intersect(KeyCells3, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
Set KeyCells4 = KeyCells.Offset(0, 3)
Adresse = Target.Value
If Adresse = "" Then
End If
If Not Application.Intersect(KeyCells4, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
Set KeyCells5 = KeyCells.Offset(0, 4)
Téléphone = Target.Value
If Téléphone = "" Then
End If
If Not Application.Intersect(KeyCells5, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
Set KeyCells6 = KeyCells.Offset(0, 5)
DemandéPar = Target.Value
If DemandéPar = "" Then
End If
If Not Application.Intersect(KeyCells6, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
Set KeyCells7 = KeyCells.Offset(0, 6)
ChargéA = Target.Value
If ChargéA = "" Then
End If
If Not Application.Intersect(KeyCells7, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
Set KeyCells8 = KeyCells.Offset(0, 7)
Echéances = Target.Value
If Echéances = "" Then
End If
If Not Application.Intersect(KeyCells8, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
Set KeyCells10 = KeyCells.Offset(0, 9)
Affaire = Target.Value
If Affaire = "" Then
End If
If Not Application.Intersect(KeyCells10, Range(Target.Address)) Is Nothing Then
Call Remplissage_FIT(Valeur, Contact, Société, Adresse, Téléphone, DemandéPar, Affaire, ChargéA, Echéances)
Else:
End If
End Sub
Sub Ouverture_FIT(ByVal Valeur As String)
Sheets("FIT").Visible = True
Sheets("FIT").Copy Before:=Sheets(1)
Sheets("FIT").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("FIT (2)").Name = "FIT N°demande " & Valeur
Sheets("FIT N°demande " & Valeur).Range("I17").Value = Valeur
'Ouvre une FIT à partir de la FIT référence cachée et y remplit le numéro de demande.
End Sub
Sub Remplissage_FIT(ByVal Valeur As String, ByVal Contact As String, ByVal Société As String, ByVal Adresse As String, ByVal Téléphone As String, ByVal DemandéPar As String, ByVal Affaire As String, ByVal ChargéA As String, ByVal Echéances As String)
Sheets("FIT N°demande " & Valeur).Range("D16").Value = Contact
Sheets("FIT N°demande " & Valeur).Range("D18").Value = Société
Sheets("FIT N°demande " & Valeur).Range("D20").Value = Adresse
Sheets("FIT N°demande " & Valeur).Range("D22").Value = Téléphone
Sheets("FIT N°demande " & Valeur).Range("I15").Value = DemandéPar
Sheets("FIT N°demande " & Valeur).Range("I21").Value = ChargéA
Sheets("FIT N°demande " & Valeur).Range("I23").Value = Echéances
Sheets("FIT N°demande " & Valeur).Range("I19").Value = Affaire
End Sub
J'ai avec ce code un nouveau problème puisque j'ai l'erreur d'éxecution 9 "l'indice n'appartient pas à la sélection à la ligne que j'ai mis en gras
Coucou,
Je comprends mieux.
Afin de pouvoir t'aider et je le peux, il faudrait que j'ai la structure de ton fichier.
Autrement dit, dans quelle colonne est ton N° demande, Contact, Société... de ta feuille que tu modifies.
Ainsi, je pourrais te simplifier ton code et faire en sorte qu'il fonctionne car je crois savoir pourquoi ca ne fonctionne pas.
Pour mettre ton fichier, faut passer par cijoint.com
Je comprends mieux.
Afin de pouvoir t'aider et je le peux, il faudrait que j'ai la structure de ton fichier.
Autrement dit, dans quelle colonne est ton N° demande, Contact, Société... de ta feuille que tu modifies.
Ainsi, je pourrais te simplifier ton code et faire en sorte qu'il fonctionne car je crois savoir pourquoi ca ne fonctionne pas.
Pour mettre ton fichier, faut passer par cijoint.com
Voici le lien : http://cjoint.com/?3GmqiGKUoVZ
On a donc la feuille "Demandes" qui correspond au tableau que l'utilisateur remplit, et en caché, la feuille FIT qui doit être générée et remplie par le programme au fur et à mesure que l'utilisateur remplie le tableau. On a donc une nouvelle feuille FIT pour chaque nouvelle ligne dans le tableau.
Voilà, en espérant que tu comprendras mieux le problème et que tu auras une solution :) merci d'avance !
On a donc la feuille "Demandes" qui correspond au tableau que l'utilisateur remplit, et en caché, la feuille FIT qui doit être générée et remplie par le programme au fur et à mesure que l'utilisateur remplie le tableau. On a donc une nouvelle feuille FIT pour chaque nouvelle ligne dans le tableau.
Voilà, en espérant que tu comprendras mieux le problème et que tu auras une solution :) merci d'avance !
Coucou,
C'est bien ce que je pensais, j'ai simplifié ton code, vois si ca fait ce que tu veux et dis moi si tu as des pbs :
https://www.cjoint.com/c/CGmqrNeJZNM
C'est bien ce que je pensais, j'ai simplifié ton code, vois si ca fait ce que tu veux et dis moi si tu as des pbs :
https://www.cjoint.com/c/CGmqrNeJZNM
C'est génial !! Merci beaucoup ça marche ! Le code est beaucoup plus simple, tu peux m'expliquer en gros ce que tu as fait ?? :) Merci beaucoup en tout cas !
Juste deux petites choses :
-d'une part, lorsque je met un numéro de téléphone (ex: 0688776655) la cellule m'affiche 688776655, comment faire pour garder le zéro??
-d'autre part, lorsque je rentre un numéro de demande (ex: 13009073280) la cellule correpondante de la FIT m'affiche 1,3009E+10
Sais tu comment résoudre ces deux petites choses ?
Juste deux petites choses :
-d'une part, lorsque je met un numéro de téléphone (ex: 0688776655) la cellule m'affiche 688776655, comment faire pour garder le zéro??
-d'autre part, lorsque je rentre un numéro de demande (ex: 13009073280) la cellule correpondante de la FIT m'affiche 1,3009E+10
Sais tu comment résoudre ces deux petites choses ?
Coucou,
je t'explique ton code et oui je sais résoudre tes2 petits pbs :
tu recopies dans vb et en vert, les commentaires
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim valeur As String 'La variable Valeur va contenir le nombre que l'on tape dans la cellule utilisée de la colonne N°de demande.
valeur = Cells(Target.Row, 1) ' valeur = cellule de la ligne modifiée, colonne 1
If Target.Column = 1 Then ' si la cellule modifiée est dans la colonne 1, alors on crées ta feuille en appelant ta macro
Call Ouverture_FIT(valeur)
Else 'i l'on modifie une autre colonne
Sheets("FIT N°demande " & valeur).Range("D16").Value = Cells(Target.Row, 2) 'Contact D16 = ligne modifiée colonne 2
Sheets("FIT N°demande " & valeur).Range("D18").Value = Cells(Target.Row, 3) 'Société : D18 = ligne modifiée colonne 3
Sheets("FIT N°demande " & valeur).Range("D20").Value = Cells(Target.Row, 4) 'Adresse : D20 = ligne modifiée colonne 4
Sheets("FIT N°demande " & valeur).Range("D22").Value = Cells(Target.Row, 5) 'Téléphone: D22 = ligne modifiée colonne 5
Sheets("FIT N°demande " & valeur).Range("I15").Value = Cells(Target.Row, 6) 'DemandéPar: I15 = ligne modifiée colonne 6
Sheets("FIT N°demande " & valeur).Range("I21").Value = Cells(Target.Row, 7) 'ChargéA: I21 = ligne modifiée colonne 7
Sheets("FIT N°demande " & valeur).Range("I23").Value = Cells(Target.Row, 8) 'Echéances: I23 = ligne modifiée colonne 8
Sheets("FIT N°demande " & valeur).Range("I19").Value = Cells(Target.Row, 9) 'Affaire: I19 = ligne modifiée colonne 9
End If
End Sub
Sub Ouverture_FIT(ByVal valeur As String)
Sheets("FIT").Visible = True
Sheets("FIT").Copy Before:=Sheets(1)
Sheets("FIT").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("FIT (2)").Name = "FIT N°demande " & valeur
Sheets("FIT N°demande " & valeur).Range("I17").Value = valeur
'Ouvre une FIT à partir de la FIT référence cachée et y remplit le numéro de demande.
End Sub
je t'explique ton code et oui je sais résoudre tes2 petits pbs :
tu recopies dans vb et en vert, les commentaires
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim valeur As String 'La variable Valeur va contenir le nombre que l'on tape dans la cellule utilisée de la colonne N°de demande.
valeur = Cells(Target.Row, 1) ' valeur = cellule de la ligne modifiée, colonne 1
If Target.Column = 1 Then ' si la cellule modifiée est dans la colonne 1, alors on crées ta feuille en appelant ta macro
Call Ouverture_FIT(valeur)
Else 'i l'on modifie une autre colonne
Sheets("FIT N°demande " & valeur).Range("D16").Value = Cells(Target.Row, 2) 'Contact D16 = ligne modifiée colonne 2
Sheets("FIT N°demande " & valeur).Range("D18").Value = Cells(Target.Row, 3) 'Société : D18 = ligne modifiée colonne 3
Sheets("FIT N°demande " & valeur).Range("D20").Value = Cells(Target.Row, 4) 'Adresse : D20 = ligne modifiée colonne 4
Sheets("FIT N°demande " & valeur).Range("D22").Value = Cells(Target.Row, 5) 'Téléphone: D22 = ligne modifiée colonne 5
Sheets("FIT N°demande " & valeur).Range("I15").Value = Cells(Target.Row, 6) 'DemandéPar: I15 = ligne modifiée colonne 6
Sheets("FIT N°demande " & valeur).Range("I21").Value = Cells(Target.Row, 7) 'ChargéA: I21 = ligne modifiée colonne 7
Sheets("FIT N°demande " & valeur).Range("I23").Value = Cells(Target.Row, 8) 'Echéances: I23 = ligne modifiée colonne 8
Sheets("FIT N°demande " & valeur).Range("I19").Value = Cells(Target.Row, 9) 'Affaire: I19 = ligne modifiée colonne 9
End If
End Sub
Sub Ouverture_FIT(ByVal valeur As String)
Sheets("FIT").Visible = True
Sheets("FIT").Copy Before:=Sheets(1)
Sheets("FIT").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("FIT (2)").Name = "FIT N°demande " & valeur
Sheets("FIT N°demande " & valeur).Range("I17").Value = valeur
'Ouvre une FIT à partir de la FIT référence cachée et y remplit le numéro de demande.
End Sub
-d'une part, lorsque je met un numéro de téléphone (ex: 0688776655) la cellule m'affiche 688776655, comment faire pour garder le zéro??
sur la colonne N° de téléphone : tu fais cliques droit, tu choisis spécial et dans type : Numéro de téléphone
-d'autre part, lorsque je rentre un numéro de demande (ex: 13009073280) la cellule correpondante de la FIT m'affiche 1,3009E+10
Pour ca, agrandis ta colonne et tu verras que tu verras tous les chiffres.
sur la colonne N° de téléphone : tu fais cliques droit, tu choisis spécial et dans type : Numéro de téléphone
-d'autre part, lorsque je rentre un numéro de demande (ex: 13009073280) la cellule correpondante de la FIT m'affiche 1,3009E+10
Pour ca, agrandis ta colonne et tu verras que tu verras tous les chiffres.
J'en reviens pas d'avoir galérer avec des programmes super longs plusieurs procédures etc pour me retrouver avec un code si simple et court ahah ! :p
Encore merciiiiiiiiii !!
Encore merciiiiiiiiii !!
Encore une chose !!!! :p Du coup lorsque par exemple il y avait "5" dans la première colonne et que je le supprime, le programme repère une modification dan la cellule et crée donc une FIT alors que la cellule est vide, comment faire?
Egalement, au moment de la création de la FIT après avoir rempli une cellule de la colonne 1, je me retrouve sur la feuille des clients, comment ça se fait ??
Egalement, au moment de la création de la FIT après avoir rempli une cellule de la colonne 1, je me retrouve sur la feuille des clients, comment ça se fait ??