[excel] recopier une valeur selon un critere
floom26
Messages postés
67
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je vous explique ma problématique.
J'ai une feuille de données en quelque sorte qui comporte 2 colonnes : A et B de la manière qui suis :
A B
12 texte1
23 texte2
0 0
5 texte3
0 0
0 0
69 texte4
... ...
Je souhaite récupérer à l'aide d'une macro (pour pouvoir insérer un bouton qui rafraichisse ma table) toutes les données sur une autre feuille avec les deux mêmes colonnes mais simplement là ou les valeurs de A sont différentes de 0.
Donc ici, sur mon autre feuille :
A B
12 texte1
23 texte2
5 texte3
69 texte4
Je ne maîtrise pas les macros c'est pour ça que je compte sur l'un de vous pour me donner le code avec si possible l'ajout en début de macros du nettoyage de la feuille pour mettre à jour intégralement à chaque fois que je la lance.
Merci beaucoup beaucoup
Je vous explique ma problématique.
J'ai une feuille de données en quelque sorte qui comporte 2 colonnes : A et B de la manière qui suis :
A B
12 texte1
23 texte2
0 0
5 texte3
0 0
0 0
69 texte4
... ...
Je souhaite récupérer à l'aide d'une macro (pour pouvoir insérer un bouton qui rafraichisse ma table) toutes les données sur une autre feuille avec les deux mêmes colonnes mais simplement là ou les valeurs de A sont différentes de 0.
Donc ici, sur mon autre feuille :
A B
12 texte1
23 texte2
5 texte3
69 texte4
Je ne maîtrise pas les macros c'est pour ça que je compte sur l'un de vous pour me donner le code avec si possible l'ajout en début de macros du nettoyage de la feuille pour mettre à jour intégralement à chaque fois que je la lance.
Merci beaucoup beaucoup
A voir également:
- [excel] recopier une valeur selon un critere
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Word et excel gratuit - Guide
- Trier un tableau excel - Guide
- Comment imprimer un tableau excel sur une seule page - 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
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+
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
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