Bonjour à tous,
Je souhaite faire quelque chose d'un peu compliqué (pour moi qui suis
débutant en VBA). Pour me faire bien comprendre, j'explique le principe de ce
que je veux faire.
Dans ma feuille "Feuil1", j'ai une liste de données. C'est une liste de
peintures et elle est remplie par l'utilisateur par le biais d'un userform.
Dans ce userform, l'utilisateur précise quel type de peinture il veut
utiliser. S'il choisit une ou plusieurs peintures, le programme calcule la
surface de peinture. Après qu'il ait rempli le userform, la liste de peinture
peut ressembler à ceci:
Colonne A Colonne B
- Peinture 1 250
- Peinture 2 157
- Peinture 3
- Peinture 4 50
Donc, l'utilisateur a besoin de peinture 1,2 et 4. Il ne veut pas de
peinture 3.
Dans la Feuille "Feuil2", je veux que cette même liste apparaisse, mais elle
doit être composée uniquement des peintures choisies par l'utilisateur, sans
ligne vide.
Comme j'ai beaucoup d'autres données, je souhaite passer par la feuille
"Feuil1" et pas par le userform.
J'espère avoir été clair.
Je remercie d'avance tous ceux qui prendront le temps de m'aider.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
FFO
Salut à toi Je te propose :
Cells.Copy Sheets("Feuil2").Select Range("A1").Select ActiveSheet.Paste Range("B65535").End(xlUp).Select Do While ActiveCell.Address <> Range("B1").Address If ActiveCell = "" Then ActiveCell.EntireRow.Delete End If ActiveCell.Offset(-1, 0).Select Loop If ActiveCell = "" Then ActiveCell.EntireRow.Delete End If
Celà te convient-il ??? Dis moi !!!
Bonjour à tous, Je souhaite faire quelque chose d'un peu compliqué (pour moi qui suis débutant en VBA). Pour me faire bien comprendre, j'explique le principe de ce que je veux faire.
Dans ma feuille "Feuil1", j'ai une liste de données. C'est une liste de peintures et elle est remplie par l'utilisateur par le biais d'un userform. Dans ce userform, l'utilisateur précise quel type de peinture il veut utiliser. S'il choisit une ou plusieurs peintures, le programme calcule la surface de peinture. Après qu'il ait rempli le userform, la liste de peinture peut ressembler à ceci: Colonne A Colonne B - Peinture 1 250 - Peinture 2 157 - Peinture 3 - Peinture 4 50
Donc, l'utilisateur a besoin de peinture 1,2 et 4. Il ne veut pas de peinture 3. Dans la Feuille "Feuil2", je veux que cette même liste apparaisse, mais elle doit être composée uniquement des peintures choisies par l'utilisateur, sans ligne vide.
Comme j'ai beaucoup d'autres données, je souhaite passer par la feuille "Feuil1" et pas par le userform.
J'espère avoir été clair. Je remercie d'avance tous ceux qui prendront le temps de m'aider.
Salut à toi
Je te propose :
Cells.Copy
Sheets("Feuil2").Select
Range("A1").Select
ActiveSheet.Paste
Range("B65535").End(xlUp).Select
Do While ActiveCell.Address <> Range("B1").Address
If ActiveCell = "" Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If ActiveCell = "" Then
ActiveCell.EntireRow.Delete
End If
Celà te convient-il ???
Dis moi !!!
Bonjour à tous,
Je souhaite faire quelque chose d'un peu compliqué (pour moi qui suis
débutant en VBA). Pour me faire bien comprendre, j'explique le principe de ce
que je veux faire.
Dans ma feuille "Feuil1", j'ai une liste de données. C'est une liste de
peintures et elle est remplie par l'utilisateur par le biais d'un userform.
Dans ce userform, l'utilisateur précise quel type de peinture il veut
utiliser. S'il choisit une ou plusieurs peintures, le programme calcule la
surface de peinture. Après qu'il ait rempli le userform, la liste de peinture
peut ressembler à ceci:
Colonne A Colonne B
- Peinture 1 250
- Peinture 2 157
- Peinture 3
- Peinture 4 50
Donc, l'utilisateur a besoin de peinture 1,2 et 4. Il ne veut pas de
peinture 3.
Dans la Feuille "Feuil2", je veux que cette même liste apparaisse, mais elle
doit être composée uniquement des peintures choisies par l'utilisateur, sans
ligne vide.
Comme j'ai beaucoup d'autres données, je souhaite passer par la feuille
"Feuil1" et pas par le userform.
J'espère avoir été clair.
Je remercie d'avance tous ceux qui prendront le temps de m'aider.
Cells.Copy Sheets("Feuil2").Select Range("A1").Select ActiveSheet.Paste Range("B65535").End(xlUp).Select Do While ActiveCell.Address <> Range("B1").Address If ActiveCell = "" Then ActiveCell.EntireRow.Delete End If ActiveCell.Offset(-1, 0).Select Loop If ActiveCell = "" Then ActiveCell.EntireRow.Delete End If
Celà te convient-il ??? Dis moi !!!
Bonjour à tous, Je souhaite faire quelque chose d'un peu compliqué (pour moi qui suis débutant en VBA). Pour me faire bien comprendre, j'explique le principe de ce que je veux faire.
Dans ma feuille "Feuil1", j'ai une liste de données. C'est une liste de peintures et elle est remplie par l'utilisateur par le biais d'un userform. Dans ce userform, l'utilisateur précise quel type de peinture il veut utiliser. S'il choisit une ou plusieurs peintures, le programme calcule la surface de peinture. Après qu'il ait rempli le userform, la liste de peinture peut ressembler à ceci: Colonne A Colonne B - Peinture 1 250 - Peinture 2 157 - Peinture 3 - Peinture 4 50
Donc, l'utilisateur a besoin de peinture 1,2 et 4. Il ne veut pas de peinture 3. Dans la Feuille "Feuil2", je veux que cette même liste apparaisse, mais elle doit être composée uniquement des peintures choisies par l'utilisateur, sans ligne vide.
Comme j'ai beaucoup d'autres données, je souhaite passer par la feuille "Feuil1" et pas par le userform.
J'espère avoir été clair. Je remercie d'avance tous ceux qui prendront le temps de m'aider.
RomainCHY
Merci de m'aider FFO. Je suis trop débutant pour comprendre tes lignes de programme... Je pensais peut être à une boucle.
J'étais en train de regarder comment faire un truc que je peux comprendre. J'ai simplifié le problème. Le problème simplifié est le suivant:
Sur une même feuille, en colonne A, j'ai mes noms de peinture, en colonne B, les montants correspondant éventuellement présents (du fait des choix de l'utilisateur). Ce que je veux, c'est que: Dim f as integer For each c in Range("B1:B10") 'Là où sont mes quantités de peintures' If c.value <>"" then For f = 1 to 10 Range("C" & f).value = i.value Next f End If Next i
Ca ne marche pas... c'est sûr, j'ai jamais fait de boucle et j'ai déjà galéré pour comprendre que si je met un "for, next" entre mon "If, End If", le End If se retrouve sans le If... :) Mais le principe est là: si la première cellule de ma colonne B est remplie, alors, sa valeur va dans la 1ere cellule de la colonne C. Sinon, on passe à la ligne suivante de B, ainsi de suite.
En gros, je passe d'une liste avec des trous à une liste sans trou.
Suis-je clair??! Espérons.
Comprends-tu ce que je veux dire et si oui, sais-tu comment faire ça?
Merci d'avance :)
Merci de m'aider FFO.
Je suis trop débutant pour comprendre tes lignes de programme...
Je pensais peut être à une boucle.
J'étais en train de regarder comment faire un truc que je peux comprendre.
J'ai simplifié le problème. Le problème simplifié est le suivant:
Sur une même feuille, en colonne A, j'ai mes noms de peinture, en colonne B,
les montants correspondant éventuellement présents (du fait des choix de
l'utilisateur).
Ce que je veux, c'est que:
Dim f as integer
For each c in Range("B1:B10") 'Là où sont mes quantités de peintures'
If c.value <>"" then
For f = 1 to 10
Range("C" & f).value = i.value
Next f
End If
Next i
Ca ne marche pas... c'est sûr, j'ai jamais fait de boucle et j'ai déjà
galéré pour comprendre que si je met un "for, next" entre mon "If, End If",
le End If se retrouve sans le If... :)
Mais le principe est là: si la première cellule de ma colonne B est remplie,
alors, sa valeur va dans la 1ere cellule de la colonne C.
Sinon, on passe à la ligne suivante de B, ainsi de suite.
En gros, je passe d'une liste avec des trous à une liste sans trou.
Suis-je clair??!
Espérons.
Comprends-tu ce que je veux dire et si oui, sais-tu comment faire ça?
Merci de m'aider FFO. Je suis trop débutant pour comprendre tes lignes de programme... Je pensais peut être à une boucle.
J'étais en train de regarder comment faire un truc que je peux comprendre. J'ai simplifié le problème. Le problème simplifié est le suivant:
Sur une même feuille, en colonne A, j'ai mes noms de peinture, en colonne B, les montants correspondant éventuellement présents (du fait des choix de l'utilisateur). Ce que je veux, c'est que: Dim f as integer For each c in Range("B1:B10") 'Là où sont mes quantités de peintures' If c.value <>"" then For f = 1 to 10 Range("C" & f).value = i.value Next f End If Next i
Ca ne marche pas... c'est sûr, j'ai jamais fait de boucle et j'ai déjà galéré pour comprendre que si je met un "for, next" entre mon "If, End If", le End If se retrouve sans le If... :) Mais le principe est là: si la première cellule de ma colonne B est remplie, alors, sa valeur va dans la 1ere cellule de la colonne C. Sinon, on passe à la ligne suivante de B, ainsi de suite.
En gros, je passe d'une liste avec des trous à une liste sans trou.
Suis-je clair??! Espérons.
Comprends-tu ce que je veux dire et si oui, sais-tu comment faire ça?
Merci d'avance :)
FFO
As tu essayé mon code qui fait la même chose mais en recopiant dabors toutes tes colonnes dans une 2° Feuille puis à chaque cellule vide de la colonne B il supprime la ligne correspondante en commençant par le bas Teste le dans une Macro Sinon cet aprés midi vers 15h30 je reviens et t'aiderai volontier avec ton code
A plus tard !!!
Merci de m'aider FFO. Je suis trop débutant pour comprendre tes lignes de programme... Je pensais peut être à une boucle.
J'étais en train de regarder comment faire un truc que je peux comprendre. J'ai simplifié le problème. Le problème simplifié est le suivant:
Sur une même feuille, en colonne A, j'ai mes noms de peinture, en colonne B, les montants correspondant éventuellement présents (du fait des choix de l'utilisateur). Ce que je veux, c'est que: Dim f as integer For each c in Range("B1:B10") 'Là où sont mes quantités de peintures' If c.value <>"" then For f = 1 to 10 Range("C" & f).value = i.value Next f End If Next i
Ca ne marche pas... c'est sûr, j'ai jamais fait de boucle et j'ai déjà galéré pour comprendre que si je met un "for, next" entre mon "If, End If", le End If se retrouve sans le If... :) Mais le principe est là: si la première cellule de ma colonne B est remplie, alors, sa valeur va dans la 1ere cellule de la colonne C. Sinon, on passe à la ligne suivante de B, ainsi de suite.
En gros, je passe d'une liste avec des trous à une liste sans trou.
Suis-je clair??! Espérons.
Comprends-tu ce que je veux dire et si oui, sais-tu comment faire ça?
Merci d'avance :)
As tu essayé mon code qui fait la même chose mais en recopiant dabors toutes
tes colonnes dans une 2° Feuille puis à chaque cellule vide de la colonne B
il supprime la ligne correspondante en commençant par le bas
Teste le dans une Macro
Sinon cet aprés midi vers 15h30 je reviens et t'aiderai volontier avec ton
code
A plus tard !!!
Merci de m'aider FFO.
Je suis trop débutant pour comprendre tes lignes de programme...
Je pensais peut être à une boucle.
J'étais en train de regarder comment faire un truc que je peux comprendre.
J'ai simplifié le problème. Le problème simplifié est le suivant:
Sur une même feuille, en colonne A, j'ai mes noms de peinture, en colonne B,
les montants correspondant éventuellement présents (du fait des choix de
l'utilisateur).
Ce que je veux, c'est que:
Dim f as integer
For each c in Range("B1:B10") 'Là où sont mes quantités de peintures'
If c.value <>"" then
For f = 1 to 10
Range("C" & f).value = i.value
Next f
End If
Next i
Ca ne marche pas... c'est sûr, j'ai jamais fait de boucle et j'ai déjà
galéré pour comprendre que si je met un "for, next" entre mon "If, End If",
le End If se retrouve sans le If... :)
Mais le principe est là: si la première cellule de ma colonne B est remplie,
alors, sa valeur va dans la 1ere cellule de la colonne C.
Sinon, on passe à la ligne suivante de B, ainsi de suite.
En gros, je passe d'une liste avec des trous à une liste sans trou.
Suis-je clair??!
Espérons.
Comprends-tu ce que je veux dire et si oui, sais-tu comment faire ça?
As tu essayé mon code qui fait la même chose mais en recopiant dabors toutes tes colonnes dans une 2° Feuille puis à chaque cellule vide de la colonne B il supprime la ligne correspondante en commençant par le bas Teste le dans une Macro Sinon cet aprés midi vers 15h30 je reviens et t'aiderai volontier avec ton code
A plus tard !!!
Merci de m'aider FFO. Je suis trop débutant pour comprendre tes lignes de programme... Je pensais peut être à une boucle.
J'étais en train de regarder comment faire un truc que je peux comprendre. J'ai simplifié le problème. Le problème simplifié est le suivant:
Sur une même feuille, en colonne A, j'ai mes noms de peinture, en colonne B, les montants correspondant éventuellement présents (du fait des choix de l'utilisateur). Ce que je veux, c'est que: Dim f as integer For each c in Range("B1:B10") 'Là où sont mes quantités de peintures' If c.value <>"" then For f = 1 to 10 Range("C" & f).value = i.value Next f End If Next i
Ca ne marche pas... c'est sûr, j'ai jamais fait de boucle et j'ai déjà galéré pour comprendre que si je met un "for, next" entre mon "If, End If", le End If se retrouve sans le If... :) Mais le principe est là: si la première cellule de ma colonne B est remplie, alors, sa valeur va dans la 1ere cellule de la colonne C. Sinon, on passe à la ligne suivante de B, ainsi de suite.
En gros, je passe d'une liste avec des trous à une liste sans trou.
Suis-je clair??! Espérons.
Comprends-tu ce que je veux dire et si oui, sais-tu comment faire ça?
Merci d'avance :)
RomainCHY
J'ai essayé ton programme dans mon problème simplifié. Ca ne marche pas, mais je suis vraiment pas sûr d'avoir tout bien fait. j'ai mis ça dans un CommandButton_click Range("D65535").End(xlUp).Select Do While ActiveCell.Address <> Range("D1").Address If ActiveCell = "" Then ActiveCell.EntireRow.Delete End If ActiveCell.Offset(-1, 0).Select Loop If ActiveCell = "" Then ActiveCell.EntireRow.Delete End If
Mes infos sont en colonne D dans mon problème simplifié. Mais rien ne se passe.
Je serai là à 15h30. Merci, à plus
J'ai essayé ton programme dans mon problème simplifié.
Ca ne marche pas, mais je suis vraiment pas sûr d'avoir tout bien fait.
j'ai mis ça dans un CommandButton_click
Range("D65535").End(xlUp).Select
Do While ActiveCell.Address <> Range("D1").Address
If ActiveCell = "" Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If ActiveCell = "" Then
ActiveCell.EntireRow.Delete
End If
Mes infos sont en colonne D dans mon problème simplifié.
Mais rien ne se passe.
J'ai essayé ton programme dans mon problème simplifié. Ca ne marche pas, mais je suis vraiment pas sûr d'avoir tout bien fait. j'ai mis ça dans un CommandButton_click Range("D65535").End(xlUp).Select Do While ActiveCell.Address <> Range("D1").Address If ActiveCell = "" Then ActiveCell.EntireRow.Delete End If ActiveCell.Offset(-1, 0).Select Loop If ActiveCell = "" Then ActiveCell.EntireRow.Delete End If
Mes infos sont en colonne D dans mon problème simplifié. Mais rien ne se passe.
Je serai là à 15h30. Merci, à plus
lSteph
Bonjour, Clic droit sur onglet Feuil1 puis coller ce code fermer vbe et entrer qqchose en a2:bx
'''''''dans le code de feuil1'''''
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim isect As Range, c As Range Set isect = Intersect(Target, [a2:b65536]) If isect Is Nothing Then Exit Sub Feuil2.[a2:b65536].ClearContents For Each c In Feuil1.Range("a2", [a65536].End(xlUp).Address) If Not CSng(c.Offset(0, 1) = 0) Then With Feuil2.[a65536].End(xlUp)(2) .Value = c .Offset(0, 1) = c.Offset(0, 1) End With End If Next End Sub
'cdlt
'lSteph
On 3 mai, 11:05, RomainCHY <romain.charny@@gmail.com> wrote:
Bonjour à tous, Je souhaite faire quelque chose d'un peu compliqué (pour moi qui suis débutant en VBA). Pour me faire bien comprendre, j'explique le principe de ce que je veux faire.
Dans ma feuille "Feuil1", j'ai une liste de données. C'est une liste de peintures et elle est remplie par l'utilisateur par le biais d'un userfor m. Dans ce userform, l'utilisateur précise quel type de peinture il veut utiliser. S'il choisit une ou plusieurs peintures, le programme calcule la surface de peinture. Après qu'il ait rempli le userform, la liste de pe inture peut ressembler à ceci: Colonne A Colonne B - Peinture 1 250 - Peinture 2 157 - Peinture 3 - Peinture 4 50
Donc, l'utilisateur a besoin de peinture 1,2 et 4. Il ne veut pas de peinture 3. Dans la Feuille "Feuil2", je veux que cette même liste apparaisse, mais elle doit être composée uniquement des peintures choisies par l'utilisateu r, sans ligne vide.
Comme j'ai beaucoup d'autres données, je souhaite passer par la feuille "Feuil1" et pas par le userform.
J'espère avoir été clair. Je remercie d'avance tous ceux qui prendront le temps de m'aider.
Bonjour,
Clic droit sur onglet Feuil1 puis coller ce code fermer vbe et entrer
qqchose en a2:bx
'''''''dans le code de feuil1'''''
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim isect As Range, c As Range
Set isect = Intersect(Target, [a2:b65536])
If isect Is Nothing Then Exit Sub
Feuil2.[a2:b65536].ClearContents
For Each c In Feuil1.Range("a2", [a65536].End(xlUp).Address)
If Not CSng(c.Offset(0, 1) = 0) Then
With Feuil2.[a65536].End(xlUp)(2)
.Value = c
.Offset(0, 1) = c.Offset(0, 1)
End With
End If
Next
End Sub
'cdlt
'lSteph
On 3 mai, 11:05, RomainCHY <romain.charny@@gmail.com> wrote:
Bonjour à tous,
Je souhaite faire quelque chose d'un peu compliqué (pour moi qui suis
débutant en VBA). Pour me faire bien comprendre, j'explique le principe de ce
que je veux faire.
Dans ma feuille "Feuil1", j'ai une liste de données. C'est une liste de
peintures et elle est remplie par l'utilisateur par le biais d'un userfor m.
Dans ce userform, l'utilisateur précise quel type de peinture il veut
utiliser. S'il choisit une ou plusieurs peintures, le programme calcule la
surface de peinture. Après qu'il ait rempli le userform, la liste de pe inture
peut ressembler à ceci:
Colonne A Colonne B
- Peinture 1 250
- Peinture 2 157
- Peinture 3
- Peinture 4 50
Donc, l'utilisateur a besoin de peinture 1,2 et 4. Il ne veut pas de
peinture 3.
Dans la Feuille "Feuil2", je veux que cette même liste apparaisse, mais elle
doit être composée uniquement des peintures choisies par l'utilisateu r, sans
ligne vide.
Comme j'ai beaucoup d'autres données, je souhaite passer par la feuille
"Feuil1" et pas par le userform.
J'espère avoir été clair.
Je remercie d'avance tous ceux qui prendront le temps de m'aider.
Bonjour, Clic droit sur onglet Feuil1 puis coller ce code fermer vbe et entrer qqchose en a2:bx
'''''''dans le code de feuil1'''''
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim isect As Range, c As Range Set isect = Intersect(Target, [a2:b65536]) If isect Is Nothing Then Exit Sub Feuil2.[a2:b65536].ClearContents For Each c In Feuil1.Range("a2", [a65536].End(xlUp).Address) If Not CSng(c.Offset(0, 1) = 0) Then With Feuil2.[a65536].End(xlUp)(2) .Value = c .Offset(0, 1) = c.Offset(0, 1) End With End If Next End Sub
'cdlt
'lSteph
On 3 mai, 11:05, RomainCHY <romain.charny@@gmail.com> wrote:
Bonjour à tous, Je souhaite faire quelque chose d'un peu compliqué (pour moi qui suis débutant en VBA). Pour me faire bien comprendre, j'explique le principe de ce que je veux faire.
Dans ma feuille "Feuil1", j'ai une liste de données. C'est une liste de peintures et elle est remplie par l'utilisateur par le biais d'un userfor m. Dans ce userform, l'utilisateur précise quel type de peinture il veut utiliser. S'il choisit une ou plusieurs peintures, le programme calcule la surface de peinture. Après qu'il ait rempli le userform, la liste de pe inture peut ressembler à ceci: Colonne A Colonne B - Peinture 1 250 - Peinture 2 157 - Peinture 3 - Peinture 4 50
Donc, l'utilisateur a besoin de peinture 1,2 et 4. Il ne veut pas de peinture 3. Dans la Feuille "Feuil2", je veux que cette même liste apparaisse, mais elle doit être composée uniquement des peintures choisies par l'utilisateu r, sans ligne vide.
Comme j'ai beaucoup d'autres données, je souhaite passer par la feuille "Feuil1" et pas par le userform.
J'espère avoir été clair. Je remercie d'avance tous ceux qui prendront le temps de m'aider.
FFO
Je viens d'essayer ton code en mettant les données à traiter en colonne D il fonctionne impec !!! Lorsque tu lances ton code avec le bouton es tu bien sur la feuille à traiter sinon met en début de ce code : Sheets("Onglet").Select (remplace "Onglet" par le nom de ta feuille)
Une autre possibilté c'est que tes données ne soient pas bien comprises par Excel En venant d'une autre source c'est souvent le cas (source Oracle par exemple) Solution : selectionner la colonne D Données/convertir suivant,suivant,terminé Puis executer la Macro
Tiens moi informé du résultat !!!!
J'ai essayé ton programme dans mon problème simplifié. Ca ne marche pas, mais je suis vraiment pas sûr d'avoir tout bien fait. j'ai mis ça dans un CommandButton_click Range("D65535").End(xlUp).Select Do While ActiveCell.Address <> Range("D1").Address If ActiveCell = "" Then ActiveCell.EntireRow.Delete End If ActiveCell.Offset(-1, 0).Select Loop If ActiveCell = "" Then ActiveCell.EntireRow.Delete End If
Mes infos sont en colonne D dans mon problème simplifié. Mais rien ne se passe.
Je serai là à 15h30. Merci, à plus
Je viens d'essayer ton code en mettant les données à traiter en colonne D il
fonctionne impec !!!
Lorsque tu lances ton code avec le bouton es tu bien sur la feuille à
traiter sinon met en début de ce code :
Sheets("Onglet").Select (remplace "Onglet" par le nom de ta feuille)
Une autre possibilté c'est que tes données ne soient pas bien comprises par
Excel
En venant d'une autre source c'est souvent le cas (source Oracle par exemple)
Solution :
selectionner la colonne D
Données/convertir suivant,suivant,terminé
Puis executer la Macro
Tiens moi informé du résultat !!!!
J'ai essayé ton programme dans mon problème simplifié.
Ca ne marche pas, mais je suis vraiment pas sûr d'avoir tout bien fait.
j'ai mis ça dans un CommandButton_click
Range("D65535").End(xlUp).Select
Do While ActiveCell.Address <> Range("D1").Address
If ActiveCell = "" Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If ActiveCell = "" Then
ActiveCell.EntireRow.Delete
End If
Mes infos sont en colonne D dans mon problème simplifié.
Mais rien ne se passe.
Je viens d'essayer ton code en mettant les données à traiter en colonne D il fonctionne impec !!! Lorsque tu lances ton code avec le bouton es tu bien sur la feuille à traiter sinon met en début de ce code : Sheets("Onglet").Select (remplace "Onglet" par le nom de ta feuille)
Une autre possibilté c'est que tes données ne soient pas bien comprises par Excel En venant d'une autre source c'est souvent le cas (source Oracle par exemple) Solution : selectionner la colonne D Données/convertir suivant,suivant,terminé Puis executer la Macro
Tiens moi informé du résultat !!!!
J'ai essayé ton programme dans mon problème simplifié. Ca ne marche pas, mais je suis vraiment pas sûr d'avoir tout bien fait. j'ai mis ça dans un CommandButton_click Range("D65535").End(xlUp).Select Do While ActiveCell.Address <> Range("D1").Address If ActiveCell = "" Then ActiveCell.EntireRow.Delete End If ActiveCell.Offset(-1, 0).Select Loop If ActiveCell = "" Then ActiveCell.EntireRow.Delete End If
Mes infos sont en colonne D dans mon problème simplifié. Mais rien ne se passe.
Je serai là à 15h30. Merci, à plus
lSteph
Re,bonjour,
Voici exemple:
http://cjoint.com/?fdqgPdHTsY
Cordialement.
lSteph
On 3 mai, 11:05, RomainCHY <romain.charny@@gmail.com> wrote:
Bonjour à tous, Je souhaite faire quelque chose d'un peu compliqué (pour moi qui suis débutant en VBA). Pour me faire bien comprendre, j'explique le principe de ce que je veux faire.
Dans ma feuille "Feuil1", j'ai une liste de données. C'est une liste de peintures et elle est remplie par l'utilisateur par le biais d'un userfor m. Dans ce userform, l'utilisateur précise quel type de peinture il veut utiliser. S'il choisit une ou plusieurs peintures, le programme calcule la surface de peinture. Après qu'il ait rempli le userform, la liste de pe inture peut ressembler à ceci: Colonne A Colonne B - Peinture 1 250 - Peinture 2 157 - Peinture 3 - Peinture 4 50
Donc, l'utilisateur a besoin de peinture 1,2 et 4. Il ne veut pas de peinture 3. Dans la Feuille "Feuil2", je veux que cette même liste apparaisse, mais elle doit être composée uniquement des peintures choisies par l'utilisateu r, sans ligne vide.
Comme j'ai beaucoup d'autres données, je souhaite passer par la feuille "Feuil1" et pas par le userform.
J'espère avoir été clair. Je remercie d'avance tous ceux qui prendront le temps de m'aider.
Re,bonjour,
Voici exemple:
http://cjoint.com/?fdqgPdHTsY
Cordialement.
lSteph
On 3 mai, 11:05, RomainCHY <romain.charny@@gmail.com> wrote:
Bonjour à tous,
Je souhaite faire quelque chose d'un peu compliqué (pour moi qui suis
débutant en VBA). Pour me faire bien comprendre, j'explique le principe de ce
que je veux faire.
Dans ma feuille "Feuil1", j'ai une liste de données. C'est une liste de
peintures et elle est remplie par l'utilisateur par le biais d'un userfor m.
Dans ce userform, l'utilisateur précise quel type de peinture il veut
utiliser. S'il choisit une ou plusieurs peintures, le programme calcule la
surface de peinture. Après qu'il ait rempli le userform, la liste de pe inture
peut ressembler à ceci:
Colonne A Colonne B
- Peinture 1 250
- Peinture 2 157
- Peinture 3
- Peinture 4 50
Donc, l'utilisateur a besoin de peinture 1,2 et 4. Il ne veut pas de
peinture 3.
Dans la Feuille "Feuil2", je veux que cette même liste apparaisse, mais elle
doit être composée uniquement des peintures choisies par l'utilisateu r, sans
ligne vide.
Comme j'ai beaucoup d'autres données, je souhaite passer par la feuille
"Feuil1" et pas par le userform.
J'espère avoir été clair.
Je remercie d'avance tous ceux qui prendront le temps de m'aider.
On 3 mai, 11:05, RomainCHY <romain.charny@@gmail.com> wrote:
Bonjour à tous, Je souhaite faire quelque chose d'un peu compliqué (pour moi qui suis débutant en VBA). Pour me faire bien comprendre, j'explique le principe de ce que je veux faire.
Dans ma feuille "Feuil1", j'ai une liste de données. C'est une liste de peintures et elle est remplie par l'utilisateur par le biais d'un userfor m. Dans ce userform, l'utilisateur précise quel type de peinture il veut utiliser. S'il choisit une ou plusieurs peintures, le programme calcule la surface de peinture. Après qu'il ait rempli le userform, la liste de pe inture peut ressembler à ceci: Colonne A Colonne B - Peinture 1 250 - Peinture 2 157 - Peinture 3 - Peinture 4 50
Donc, l'utilisateur a besoin de peinture 1,2 et 4. Il ne veut pas de peinture 3. Dans la Feuille "Feuil2", je veux que cette même liste apparaisse, mais elle doit être composée uniquement des peintures choisies par l'utilisateu r, sans ligne vide.
Comme j'ai beaucoup d'autres données, je souhaite passer par la feuille "Feuil1" et pas par le userform.
J'espère avoir été clair. Je remercie d'avance tous ceux qui prendront le temps de m'aider.
RomainCHY
Merci beaucoup pour ton aide ISteph, j'utiliserai ton programme, ça marche très bien.
ciao
Merci beaucoup pour ton aide ISteph, j'utiliserai ton programme, ça marche
très bien.