Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

VBA copie cellules sous conditions

cricri94, le dimanche 17 février 2008 à 19:32:45
Bonjour,
Je suis secrétaire d'un petit club de bad et j'ai un tableau regroupant tous les inscrits pour un tournoi...
J'aimerai dispatcher ces infos dans differentes feuilles (du même classeur)... Dans exactement 27 feuilles (ben oui)...
Pour ajouter 27 feuilles à mon classeur, leur donner un format avec ligne en-tête et compagnie, ça va, tout marche mais c'est les histoires de conditions... J'explique : il me faudrait

Dans "feuilParis", lister ligne par ligne en commençant par la ligne 2 puis en descendant
si valeur colonne F=H et si valeur colonne K=B- alors recopie des cellules en colonne B-C-D-K dans "feuil SHB-" en partant de la ligne 2 et ainsi de suite jusqu'à la dernière ligne (nombre indeterminé)

J'ai essayé qqs trucs mais je ne suis pas du tout une spécialiste en VBA, je n'en suis qu'aux prémisses...
Quelqu'un peut-il m'aider?
Merci d'avance
Configuration: Windows XP
Internet Explorer 6.0
Répondre à cricri94  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ivanhoe, le dimanche 17 février 2008 à 20:06:35
Bonjour Cricri,
Ah ! les joies du bénévolat en milieu associatif, qui te fait bosser un dimanche soir sur un %##! de fichier à 27 feuilles !
Difficile de donner une réponse précise sans avoir l'obje sous les yeux, mais voici quelques pistes (je ne suis pas non plus spécialiste, ce ne sont que des suggestions ) :

Pour descendre une à une toutes les lignes de ton tableau, il te faudra une boucle
par exemple : la boucle s'effectue jusqu'à ce qu'on arrive à une cellule vide (en fait, tant que (while) la cellule active n'est pas vide)

While Activecell.value <> empty
[.....]
[.....]

Activecell.offset(1,0).activate 'activer la cellule suivante vers le bas
Wend

Pour faire tes tests, il te faut une condition si...alors (if... then)
If Cells (activecell.row,6) = "H" And Cells(activecell.row,11) = "B-" then
[...]
End If
J'utilise ici une des nombreuses façons d'identifier une cellule : Cells(n° ligne, n° colonne), avec ici n° ligne qui est activecell.row (n° de la ligne de la cellule active) et n° colonne = 6 pour la colonne F et 11 pour la colonne K

Pour aller écrire à la fin de ta feuille "SHB-", on peut essayer qqch comme :
Sheets ("SHB-").range("A1").end(xldown).offset(1,0)
ce qui se traduit par :
dans la feuille ("SHB-"), à partir de la cellule A1, aller jusqu'à la dernière valeur trouvée vers le bas (end(xldown)) et passer à la ligne suivante (offset(1,0) décale d'une ligne vers le bas et de 0 colonne, c'est à dire passe à la ligne suivante)

Bon courage ! N'hésite pas à consulter l'aide en ligne de l'éditeur VBA, c'est trèsinstructif !
Répondre à Ivanhoe

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
cricri94, le dimanche 17 février 2008 à 20:54:34
Bon, j'en suis là, donc un peu nulle part...

Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long

Sheets("Paris").Select
For Each Ligne In Sheets("Paris")
Sheets("SHB-").Activate ' feuille de destination
NumLig = 2 'N° de la 1er ligne de données
With Sheets("Paris") ' feuille source'
NbrLig = .Cells(65536, Col).End(xlUp).Row
End With

If Cells(ActiveCell.Row, 6).Value = "B-" Then
If Cells(ActiveCell.Row, 11).Value = "H" Then
Cells(Lig, Col).Column("C", "D", "B", "K").Copy
NumLig = NumLig + 1
Sheets("SHB-").Cells(NumLig, 1).Insert Shift:=xlDown
'ici pour insérer ou .Paste pour coller'
End If
MsgBox ("C'est fini !!")

End Sub
Répondre à cricri94

3


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Ivan-hoe, le lundi 18 février 2008 à 00:01:50
Bonsoir Cricri,
il y a de bonnes idées dans ce que tu as écrit, mais tout ne me semble pas toujours dans le bon ordre
Je te propose de t'inspirer de la petite procédure ci-dessous, qui suit le schéma suivant :
- sélection de la feuille "à lire" ("Paris")
- lecture de chaque ligne, tant que la cellule A n'est pas vide
- si la ligne répond aux deux conditions, alors écriture des données des colonnes C-D-B et K dans la feuille "à écrire" ("SHB-"), sans l'activer

A toi de jouer !


Dim DerniereLigne As Long 'dans la feuille à écrire
Dim LigneActive As Long 'dans la feuille à lire

Sub Procedure()

Sheets("Paris").Select
Range("A2").Select

While ActiveCell.Value <> Empty
LigneActive = ActiveCell.Row 'n° de la ligne "à lire"
If Cells(LigneActive, 6).Value = "H" And Cells(LigneActive, 11).Value = "B-" Then

'écriture dans la feuille "SHB-"
With Sheets("SHB-")
DerniereLigne = .Range("A65536").End(xlUp).Offset(1, 0).Row 'n° de la ligne "à écrire"
.Cells(DerniereLigne, 1).Value = Cells(LigneActive, 3).Value 'écrit dans la 1ère colonne la valeur trouvée dans la colonne C
.Cells(DerniereLigne, 2).Value = Cells(LigneActive, 4).Value ' écrit dans la 2è colonne la valeur trouvée dans la colonne D
.Cells(DerniereLigne, 3).Value = Cells(LigneActive, 2).Value ' écrit dans la 3è colonne la valeur trouvée dans la colonne B
.Cells(DerniereLigne, 4).Value = Cells(LigneActive, 11).Value 'écrit dans la 4è colonne la valeur trouvée dans la colonne K
End With

End If
ActiveCell.Offset(1, 0).Activate

Wend
End Sub
Répondre à Ivan-hoe

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
cricri94, le lundi 18 février 2008 à 07:43:10
C'est super !! ça marche !! Sauf que... les valeurs sont doublées cad que mes résultats sont copiés deux fois dans la feuille de destination (SHB-)... Je vais essayer de trouver où ça coince... Ou ce serait abuser de demander si tu as encore une idée...
En tout cas, vraiment merci beaucoup...
Répondre à cricri94

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 cricri94, le lundi 18 février 2008 à 07:49:38
Rectification, ça marche très bien...
La 1ère fois, effectivement, les résultats étaient doublés mais je viens de réessayer depuis le début et c'est IMPECCABLE!!

Merci beaucoup beaucoup...
A bientôt,
Cricri
Répondre à cricri94

Résultats pour VBA copie cellules sous conditions

[VBA] Copie vers presse papier (Résolu) Peut-on via vba copier la valeur d'une cellule vers le presse papier ? A la fermeture d'une userform je crée un n° de code dans une cellule, j'aimerais copier ce code dans le presse papier pour le coller dans un autre programme... www.commentcamarche.net/forum/affich-3272925-vba-copie-vers-presse-papier
[VBA] copier cellule sur une autre feuille (Résolu) Bonjour, J'ai cherché sur les forums des discussions qui pourraient m'aider mais aucune ne m'a spécialement aider comme je le souhaite. Alors je fais directement appel à vous. J'essai de m'exprimer au plus compréhensible.... www.commentcamarche.net/forum/affich-7560160-vba-copier-cellule-sur-une-autre-feuille
Excel VBA copier cellules avec formules (Résolu) Bonjour, Etant novice en VBA, j'utilise souvent outils/macro quand je ne sais pas faire. Voici donc mon soucis : En A1, j'ai saisi une formule excel. J'ai tiré cette formule sur la plage A2:A100. En visualisant le code VBA, je... www.commentcamarche.net/forum/affich-3944923-excel-vba-copier-cellules-avec-formules

Résultats pour VBA copie cellules sous conditions

[VBA] Détection de modification de celluleIl y a, bien entendu, l'événement Change d'une feuille qui détecte le changement de la cellule active mais il ne donne pas de renseignement quant au contenu. Ces quelques lignes de code permettent de savoir si la cellule a été modifiée, fonctionne si... www.commentcamarche.net/faq/sujet-12394-vba-detection-de-modification-de-cellule
[Excel] Colorer des cellules sur conditionsIl existe dans Excel des fonctions très pratiques mais peu connues et peu utilisées. Exemple : vous souhaitez qu'une cellule se colore automatiquement en rouge (ou autre mise en forme de police, de bordure, de trame) selon une condition : un... www.commentcamarche.net/faq/sujet-3975-excel-colorer-des-cellules-sur-conditions

Résultats pour VBA copie cellules sous conditions

[vba] recopier x fois une feuille Excel (Résolu)Bonsoir le forum Comment en vba copier une feuille appelée "Valeur" en une autre nommée "Position 1" puis relancer la macro qui va à nouveau copier la même feuille "Valeur" et l'appeler "Position 2" puis relancer la macro ............. etc....... www.commentcamarche.net/forum/affich-1858185-vba-recopier-x-fois-une-feuille-excel
Aide pour une condition en VBA sous Excel (Résolu)Bonjour à toutes et tous, Je souhaiterais, sous VBA, copier, dans une cellule choisie, le résultat obtenu dans la colonne C si la colonne A contient une donnée précise. J'explique sous une forme un peu plus simple : Si (A10:A100=1;A2="cellule de... www.commentcamarche.net/forum/affich-4455495-aide-pour-une-condition-en-vba-sous-excel
VBA Loop Until (Résolu)Bonjour, J'ai un problème avec une macro: j'aimerais copier les lignes d'une feuille dans une autre jusqu'à ce qu'il n'y ait plus rien à copier (cellules vides), J'ai essayé de faire une macro du style 'loop... www.commentcamarche.net/forum/affich-8453575-vba-loop-until

Résultats pour VBA copie cellules sous conditions

Tableur - La sélection des cellulesSélection de cellules Le tableur est un formidable outil pour manipuler des données. Ainsi, pour pouvoir manipuler les données il est nécessaire de disposer d'outils permettant de sélectionner rapidement toutes les cellules dont on a... www.commentcamarche.net/contents/tableur/tabcellselect.php3