Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2011, 14h28   #1
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
Par défaut Recopier des lignes après un tri

Bonjour,

Je m'en remet une fois de plus à vous. J'ai en fait un tableau avec un certain nombre de donnée (poids, diamètre, etc).
Je réalise à partir d'une combobox un tri sur ce tableau afin de ne voir qu'une seule ligne (sur les lignes sont rentrés différentes pièces mécaniques qui ont toute une désignation type RSS ou RSF, RFD, etc...). Le tri est d'ailleurs effectué selon cette désignation. Pour ce qui est du tri çà marche pas mal.

Mais ce que j'essaie de faire maintenant c'est de copier la ligne que je récupère après tri et la coller dans une autre case (de manière à avoir un genre d'historique de recherche). J'ai aussi réussi a faire cette commande mais le problème c'est que je n'arrive pas à garder la valeur copiée quand je fais un autre tri (en gros à chaque fois que je clique sur mon bouton de commande). A chaque fois la valeur est effacé par celle demandé lors du dernier tri. J'espère être assez clair dans mon explication.... même si ce n'est pas simple.

Je pense avoir un problème d'incrémentation mais je vois pas lequel. Si vous pouviez m'aider et me dire où je me trompes ce serait vraiment sympa!!

Je poste le code que j'ai réalisé pour l'instant et vous remercie par avance

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Private Sub ComboBox1_Change()
 
End Sub
 
Private Sub CommandButton1_Click()
 
Dim iP As Long
Dim iM As Long
 
Dim M As Worksheet
 
 
Set M = Worksheets("Sheet2")
 
 
iM = 1
iP = 5
 
Sheet2.Select
Selection.AutoFilter Field:=1, Criteria1:=ComboBox1.Text, VisibleDropDown:=False
 
For iM = 1 To 10
 
    If M.Cells(iM, 1).Text = ComboBox1.Text Then
 
        M.Rows(iM).Copy M.Cells(iP, 1)
 
 
    End If
Next
 
    iP = iP + 1
 
End Sub
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 17h06   #2
Membre du Club
 
Inscription : janvier 2007
Messages : 134
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 134
Points : 47
Points : 47
Bonjour

Je ne suis pas sur de bien comprendre ta question mais si je regarde ton code, à chaque fois que tu cliques sur filtre, tu réinitialise la variable iP à 5.

Donc je pense que tu écris toujours au même endroit.

Tu pourrais positionner cette variable en global, faire une initialisation à l'ouverture du classeur (par exemple) et ensuite faire l'incrément dans ta macro.

J'espère que c'est ça ton souci.

A+
basto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 10h12   #3
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
Oui c'est bien çà mon problème. Je me suis aperçu plus tard que je réinitialisais à chaque fois. Du coup j'ai réalisé un code avec des if.. Elseif et çà fonctionne mais c'est relativement lourd en nombre de ligne. C'est pourquoi l'idée de la boucle me semble plus judicieuse. J'ai donc bien essayé de mettre iP dans ma feuille 1 mais le problème c'est que maintenant quand je lance mon filtre il me dit qu'il ne trouve pas la variable iP. Surement car elle n'est pas défini au même endroit. Comment je peux faire pour qu'il la retrouve?

Merci et désolé de ne pas être au top niveau VBA
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 08h50   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 885
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 885
Points : 7 151
Points : 7 151
Bonjour,

Si tu as corrigé ton code et que tu as de nouveau un problème, post le de nouveau afin que l'on puisse t'aider
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 09h06   #5
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Private Sub CommandButton1_Click()
 
Dim iP2 As Long
Dim iM As Long
Dim P As Worksheet
Dim M As Worksheet
 
Set P = Worksheets("Sheet1")
Set M = Worksheets("Sheet2")
 
 
iM = 1
 
iP2 = Worksheets("Sheet1").iP
 
 
Sheet2.Select
Selection.AutoFilter Field:=1, Criteria1:=ComboBox1.Text, VisibleDropDown:=False
 
 
 
 
   If P.Cells(iP2, 1).Value = "" Then
 
        For iM = 1 To 10
 
            If M.Cells(iM, 1).Text = ComboBox1.Text Then
               M.Rows(iM).Copy P.Cells(iP, 1)
 
            End If
        Next
 
     Else
         iP2 = iP2 + 1
 
          For iM = 1 To 10
 
            If M.Cells(iM, 1).Text = ComboBox1.Text Then
               M.Rows(iM).Copy P.Cells(iP, 1)
 
 
            End If
        Next
 
 
   End If
 
iP2 = iP2 + 1
 
 
Sheet1.Select
 
 
 
End Sub
Voila le code actuel qui ne fonctionne pas évidemment. Je n'arrive pas a comprendre comment je dois incrémenter mes variables pour que çà fonctionne correctement.

Merci pour votre aide.

Julien
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 09h27   #6
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 885
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 885
Points : 7 151
Points : 7 151
tu fais référence à la variable IP qui se trouve dans la feuille 1

Code :
iP2 = Worksheets("Sheet1").iP
Comment est déclarée cette variable dans la feuil1 et ou?

Pour que cela fonctionne, il faut déclarer ta variable en Public sur la feuille (pas dans une procédure)
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 09h36   #7
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
Elle est déclaré dans la feuille 1 dans un command button de cette manière
Code :
1
2
3
4
5
6
7
8
Private Sub CommandButton1_Click()
 
Dim iP As Long
 
iP = 2
 
Sheet1.Select
UserForm1.Show
Comment fais t'on pour la déclarer en public?
Et est-ce que la référence iP2 = Worksheets("Sheet1").iP est bonne car il me dit que l'objet ne supporte pas cette propriété.
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 09h44   #8
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 885
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 885
Points : 7 151
Points : 7 151
Citation:
Comment fais t'on pour la déclarer en public?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
Option Explicit
Public Ip As Long
 
 
Private Sub CommandButton1_Click()
 
iP = 2
 
Sheet1.Select
UserForm1.Show
 
End Sub

Citation:
Et est-ce que la référence iP2 = Worksheets("Sheet1").iP est bonne car il me dit que l'objet ne supporte pas cette propriété.
la variable Ip n'étant pas déclaré en Public, excel ne la connait pas, d'ou cette erreur
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 10h04   #9
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
Merci beaucoup Jérome pour ces info qui vont m'être bien utiles!!!
J'ai essayé çà marche bien pour la déclaration mais j'ai toujours un problème dans mon code. En effet quand je lance un premier filtre il m'écrit bien la valeur sur la ligne 2 (car ma valeur initial pour Ip est 2 donc çà c'est ok) Si cette ligne est renseigné il écrit sur la ligne 3 ce qui est nickel aussi mais après il réecrit toujours sur la ligne 2 alors qu'à la fin du code je lui dis d'incrémenter la variable Ip

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Private Sub CommandButton1_Click()
 
Dim iP2 As Long
Dim iM As Long
Dim P As Worksheet
Dim M As Worksheet
 
Set P = Worksheets("Sheet1")
Set M = Worksheets("Sheet2")
 
 
iM = 1
 
iP2 = Worksheets("Sheet1").Ip
 
 
Sheet2.Select
Selection.AutoFilter Field:=1, Criteria1:=ComboBox1.Text, VisibleDropDown:=False
 
 
   If P.Cells(iP2, 1).Value = "" Then
 
        For iM = 1 To 10
 
            If M.Cells(iM, 1).Text = ComboBox1.Text Then
               M.Rows(iM).Copy P.Cells(iP2, 1)
 
            End If
        Next
 
     Else
         iP2 = iP2 + 1
 
          For iM = 1 To 10
 
            If M.Cells(iM, 1).Text = ComboBox1.Text Then
               M.Rows(iM).Copy P.Cells(iP2, 1)
 
 
            End If
        Next
 
 
 
   End If
 
 Ip = Ip + 1
 
Sheet1.Select
 
 
 
End Sub
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 10h05   #10
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
J'ai posté vite mais est ce que tu vois pourquoi ma variable Ip ne s'incrémente pas à chaque fois. Encore désolé je te prend du temps mais je débute en VBA.
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 10h09   #11
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
la variable Ip s'incrémente bien à chaque fois cependant sa valeur est ré-initialisé à chaque chargement de ton classeur (ou action sur le bouton "STOP" de l'éditeur VBA).
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 10h13   #12
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
D'accord mais alors comment faire pour qu'elle ne se réinitialise pas a chaque fois que j'appuie sur mon command button?
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 10h21   #13
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
une solution peu-être de stocker sa valeur dans une cellules d'une de tes feuilles excel..
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 10h45   #14
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
j'ai fais comme tu m'as dit en incrémentant dans une cellule et çà me semble fonctionner. Du moins sur mon petit programme test çà marche bien. Il faut maintenant que je mette çà en appli sur mon vrai programme.

Merci bien à vous deux.

J'avais une autre petite question mais qui n'a rien à voir avec ce problème là donc peut être faut il que j'ouvre une nouvelle discussion? Mais au cas où vous ayez la réponse directement pour ne pas surcharger .

J'ai plusieurs cellule avec du texte (RAD RADS RAQ) et je voudrais pouvoir regrouper toute les valeurs de ces cellules dans une seul avec un retour à la ligne à chaque fois pour la lisibilité. J'ai essayé avec la fonction concatenete et de taper l'instruction car(10) entre les valeurs de cellules (apparement car(10) correpond à un retour à la ligne mais rien n'y fais il m'affiche dans la cellule !NAME et çà marche pas.
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 11h11   #15
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 885
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 885
Points : 7 151
Points : 7 151
Tu peux en effet utiliser car(10) pour le retour a la ligne.
Il faut néanmoins dans le format de la cellule onglet Alignement, cocher la case "Renvoyer à la ligne automatiquement"
Code :
=H58&CAR(10)&H59&CAR(10)&H60
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 13h34   #16
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
C'est bien ce que j'ai fais j'ai coché renvoyé à la ligne et taper exactement la même formule que toi mais rien n'y fait il continue de m'afficher #NAME?

J'ai essayé de taper cette formule et pareil il ne veut pas renseigner la case
Code :
=CONCATENER(G20;CAR(10);G21;CAR(10);G22)
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 13h41   #17
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 885
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 885
Points : 7 151
Points : 7 151
a tout hasard, les cellules G20, G21 et G22 ne retournent pas d'erreurs?
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 13h56   #18
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
Pas que je vois dans ces cellules sont simplement inscrits
RAD en G20
RAG en G21
RAQ en G22
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 14h04   #19
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
Apparement c'est le CAR(10) qui lui pose un problème. Je suis sous office 2003 est ce que cette commande est prise en compte par la version?
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 14h12   #20
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
C'est bon j'ai trouvé. Je suis sous une version anglaise. Il ne faut donc pas taper CAR mais CHAR!!! Je te remercie quand même et à mon avis j'aurais d'autre soucis d'ici peu.

Julien
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h57.


 
 
 
 
Partenaires

Hébergement Web