Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recopie de lignes avec condition

  • Initiateur de la discussion Initiateur de la discussion Jiheme
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Jiheme

XLDnaute Accro
Bonsoir à tous

Je cherche à recopier 2 lignes en fonction d'un mois indiqué dans la cellule B1 (par une liste déroulante) sur une seconde feuille en regard du mois concerné.

J'ai commencé à écrire un code, mais "erreur de syntaxe" à répétition.

Je ne reviens que demain, alors bonne soirée à tous.

A+
 

Pièces jointes

Re : Recopie de lignes avec condition

Bonsoir



Ca marche pour moi , comme dirait Rick


Code:
Sub MAJ()
Dim m As String
Application.ScreenUpdating = False
m = Sheets("Integration").Range("b1")
Range("B5:G6").Copy Sheets("Récap").Cells.Find(m).Offset(0, 2)
Application.ScreenUpdating = True
End Sub

Private Sub CommandButton1_Click()
MAJ
End Sub

EDITION: bonsoir Robert, perdu tes lunettes 😉
 
Dernière édition:
Re : Recopie de lignes avec condition

Bonjour Jiheme, bonjour le forum,

En pièce jointe ton fichier modifié.

Attention, dans l'onglet Récap tu as écrit Fevier au lieu de Février...

Édition : Encore trop lent pour VBACrumble dont le code est plus simple...
 

Pièces jointes

Dernière édition:
Re : Recopie de lignes avec condition

Bonsoir Vbacrumble, Robert, re à tous

En fait à part le MERCI ce post ne sert à rien, mais il peut redonner le moral à ceux qui galèrent sur du VBA niveau "CP" (comme moi), en écrivant mes nouveaux problèmes, j'ai trouvé des solutions...

merci à vous, les deux fonctionnent parfaitement, et je m'aperçois que je ne suis pas très loin d'y arriver, mais il me manque toujours le petit truc qui fait la différence entre une macro qui fait ce que tu as envie qu'elle fasse et un message d'erreur...

Je me rend compte que je n'ai pas assez "blindé" mon truc, en effet si l'on clique le bouton sans avoir sélectionné le mois c'est la cata, j'ai ajouter cette ligne et cela à l'air de fonctionner :
Code:
If m = "" Then Exit Sub

Mais je n'arrive pas à trouver le code pour éviter l'écrasement d'un mois déjà incorporé.
En fait en ecrivant ce post l'idée m'est venue, j'ai ajouté :
Code:
If Sheets("Récap").Cells.Find(m).Offset(0, 2) <> "" Then Exit Sub

Je ne sais pas si c'est très "orthodoxe", mais cela marche.

Si vous avez deux minutes dites moi quand même s'il y a mieux
Encore merci
A+
 
Re : Recopie de lignes avec condition

Bonjour à tous,

Encore un point suite à mes deux sécurités évoquées ci-dessus je voudrais qu'en plus de sortir de la macro, s'affiche un message box tout simple, du genre: "vous n'avez pas sélectionné le mois"

Je sais faire ce message, mais je n'arrive pas à lier l'instruction aux autres par exemple sur cette condition :

Code:
If m = "" Then Exit Sub

que dois je rajouter ?

Merci
 
Re : Recopie de lignes avec condition

Bonjour Vbacrumble, le forum

Merci la bonne solution est celle ci

If m = "" Then Msgbox "coucou" : Exit Sub

La première interrompt bien la macro mais n'affiche pas le message.

Ceci au cas où cela puisse servir à quelqu'un dans l'avenir

Bon WE à tous
 
Re : Recopie de lignes avec condition

Bonjour

Encore un petit souci avec cette macro : il faut qu'elle recopie les valeurs qui sont dans les cellules sources et non les cellules, car dans le fichier définitif, les cellules sources sont alimentées par des fonctions qui vont chercher dans une autre feuille.

Je pense qu'il faut rajouter "Value" mais je n'y arrive pas.

Code:
Sub MAJ()
'Macro écrite par Jihème 16-05-09 avec beaucoup d'aide du forum XLD.
Dim m As String
Application.ScreenUpdating = False
m = Sheets("Integration").Range("b1")
    If m = "" Then MsgBox "Vous n'avez pas saisi le mois", vbOKOnly: Exit Sub
    If Sheets("Récap").Cells.Find(m).Offset(0, 2) <> "" Then MsgBox " Il y a déja des données pour cette période", vbOKOnly: Exit Sub
Range("B5:G6").Copy Sheets("Récap").Cells.Find(m).Offset(0, 2)
Application.ScreenUpdating = True
End Sub

Merci

Absent 48 heures
 
Re : Recopie de lignes avec condition

Bonjour Jiheme



Ca semble ok comme cela.


Code:
Sub MAJ()
'Macro écrite par Jihème 16-05-09 avec beaucoup d'aide du forum XLD.
Dim m As String
Application.ScreenUpdating = False
m = Sheets("Integration").Range("b1")
    If m = "" Then MsgBox "Vous n'avez pas saisi le mois", vbOKOnly: Exit Sub
    If Sheets("Récap").Cells.Find(m).Offset(0, 2) <> "" Then MsgBox " Il y a déja des données pour cette période", vbOKOnly: Exit Sub
Range("B5:G6").Copy
Sheets("Récap").Cells.Find(m).Offset(0, 2).PasteSpecial xlValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…