Programme VBA
Résolu/Fermé
A voir également:
- Programme VBA
- Programme demarrage windows 10 - Guide
- Programme démarrage windows 10 - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Fichier ouvert dans un autre programme - Guide
- Erreur 1004 vba ✓ - Forum VB / VBA
16 réponses
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
12 juil. 2013 à 09:29
12 juil. 2013 à 09:29
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.
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
12 juil. 2013 à 11:32
12 juil. 2013 à 11:32
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
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
12 juil. 2013 à 15:30
12 juil. 2013 à 15:30
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
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
12 juil. 2013 à 16:01
12 juil. 2013 à 16:01
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 !
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
12 juil. 2013 à 16:18
12 juil. 2013 à 16:18
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
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
12 juil. 2013 à 16:20
12 juil. 2013 à 16:20
tu regarderas mais il y a peut être une erreur sur N° affaire
remplaces la cellue : cells(target.row,9) par cells(target.row,10)
remplaces la cellue : cells(target.row,9) par cells(target.row,10)
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 ?
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
12 juil. 2013 à 16:36
12 juil. 2013 à 16:36
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
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
12 juil. 2013 à 16:38
12 juil. 2013 à 16:38
-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 ??