[excel] recopier une valeur selon un critere
Fermé
floom26
Messages postés
61
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
25 janvier 2011
-
18 janv. 2010 à 14:50
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 19 janv. 2010 à 19:07
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 19 janv. 2010 à 19:07
A voir également:
- [excel] recopier une valeur selon un critere
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Calculer une moyenne sur excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
5 réponses
Bonjour,
Je ne veux pas t'empêcher de faire une macro mais il me semble (si j'ai bien compris ta demande sinon excuse moi) que tu peux régler ça avec une formule en utilisant la fonction SI.
Ca donnerait un truc comme ça :
Dans la colonne A de ta feuille 2 la formule suivante =SI(feuille1!A1=0;"";feuille1!A1) que tu recopies jusqu'en bas de la feuille
Dans la colonne B de ta feuille 2 la formule suivante =SI(feuille1!A1=0;"";feuille1!B1) que tu recopies également jusqu'en bas.
Avantage pas besoin d'un bouton pour raffraichir tes données puisqu'elles sont à jour en permanence.
J'espère que ça peut t'aider.
Cynlg
Je ne veux pas t'empêcher de faire une macro mais il me semble (si j'ai bien compris ta demande sinon excuse moi) que tu peux régler ça avec une formule en utilisant la fonction SI.
Ca donnerait un truc comme ça :
Dans la colonne A de ta feuille 2 la formule suivante =SI(feuille1!A1=0;"";feuille1!A1) que tu recopies jusqu'en bas de la feuille
Dans la colonne B de ta feuille 2 la formule suivante =SI(feuille1!A1=0;"";feuille1!B1) que tu recopies également jusqu'en bas.
Avantage pas besoin d'un bouton pour raffraichir tes données puisqu'elles sont à jour en permanence.
J'espère que ça peut t'aider.
Cynlg
floom26
Messages postés
61
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
25 janvier 2011
2
18 janv. 2010 à 15:37
18 janv. 2010 à 15:37
Merci Cynlg pour ta réponse mais le "désavantage" de cette formule est qu'il y a des lignes vides et j'aimerai si possible ne pas les supprimer à la main ou en filtrant...
Dans ce cas je suis désolée car je ne sais pas t'aider.
J'espère que d'autres pourront le faire.
A bientôt.
Cynlg
J'espère que d'autres pourront le faire.
A bientôt.
Cynlg
bonjour
peut etre une autre solution facile
1) faire un cop/col special avec liaison des2colonnes de feuil 1 vers feuil 2
2) sur la feuille 2 selectionner les 2colonnes puis trier de Z>>A
3) pour faire beau selectionner les 2 col puis format> personnalisé saisir standard; standars ;"" c'est pour supprimer les 0
a+
peut etre une autre solution facile
1) faire un cop/col special avec liaison des2colonnes de feuil 1 vers feuil 2
2) sur la feuille 2 selectionner les 2colonnes puis trier de Z>>A
3) pour faire beau selectionner les 2 col puis format> personnalisé saisir standard; standars ;"" c'est pour supprimer les 0
a+
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
19 janv. 2010 à 16:51
19 janv. 2010 à 16:51
Trouvé sur ce post et adapté à tes critères
https://www.commentcamarche.net/
Sub Bouton1_QuandClic()
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("feuil2").Activate ' feuille de destination
Col = "a" ' colonne données non vides à tester'
NumLig = 2 'alors là ca doit etre le N° de la 1er ligne de données en comptant la ligne 1 = 0 .... ? '
With Sheets("feuil1") ' feuille source'
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig 'n° de la 1ere ligne de données'
If .Cells(Lig, Col).Value <> 0 Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Sheets("feuil2").Cells(NumLig, 1).Insert Shift:=xlDown
'ici pour insérer ou .Paste pour coller'
End If
Next
End With
End Sub
https://www.commentcamarche.net/
Sub Bouton1_QuandClic()
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("feuil2").Activate ' feuille de destination
Col = "a" ' colonne données non vides à tester'
NumLig = 2 'alors là ca doit etre le N° de la 1er ligne de données en comptant la ligne 1 = 0 .... ? '
With Sheets("feuil1") ' feuille source'
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig 'n° de la 1ere ligne de données'
If .Cells(Lig, Col).Value <> 0 Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Sheets("feuil2").Cells(NumLig, 1).Insert Shift:=xlDown
'ici pour insérer ou .Paste pour coller'
End If
Next
End With
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
19 janv. 2010 à 19:07
19 janv. 2010 à 19:07
Bonjour
ci joint solution par macro et solution par formules (feuille3)
https://www.cjoint.com/?btteNseWsl
macro proposée:
ci joint solution par macro et solution par formules (feuille3)
https://www.cjoint.com/?btteNseWsl
macro proposée:
Sub recopier_sans0() Dim nbre As Long, lig As Long, cptr As Long Dim tablo With Sheets(1) derlig = .Range("A65536").End(xlUp).Row nbre = Application.CountA(.Range("A1:A" & derlig)) - Application.CountIf(.Range("A1:A" & derlig), 0) ReDim tablo(nbre - 1, 1) For lig = 1 To derlig If .Cells(lig, 1) <> 0 Then tablo(cptr, 0) = .Cells(lig, 1) tablo(cptr, 1) = .Cells(lig, 2) cptr = cptr + 1 End If Next End With Application.ScreenUpdating = False With Sheets(2) .Range("A1").Resize(nbre, 2) = tablo .Activate End With End Sub