Copie de ligne au niveau de la cellule active

  • Initiateur de la discussion Initiateur de la discussion babylonzoo
  • 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 !

B

babylonzoo

Guest
Bonjour et bravo pour ce site ! ,
voila ma question : j'ai créé une feuille de calendrier de tache ou chaque taches a effectuer dans la journée est représentée par une croix ( cf fichier joint). j'aimerai si possible automatiser la saisie de ces croix pour certain items nommé trt g.... en fait je souhaiterai creer un userform ou les boutons permettrai de coller une série de croix predefinie (environ 10 series) au niveau du jour 0 ( par exemple se mettre en cellule F17 , cliquer sur le bouton "1 tache tous les 2 jours pendant 3 semaines", ainsi la saisie des croix un jour sur 2 pendant 3 semaines serai coller automatiquement).
Je vous remercie pour votre aide
babylonzoo
 

Pièces jointes

Re : Copie de ligne au niveau de la cellule active

Bonsoir et bienvenu sur le forum BabylonZoo,

Je comprend pas tout!

Solution 1 :
Tu veux des boutons sur ta feuille excel :
-> 1 bouton : "1 tache tous les 2 jrs"
-> 1 bouton : "1 tache tous les 3 jrs"
-> ...

Un message qui s'ouvre te demandant sur combien de semaine tu veux le faire?

=> c'est a-dire des boutons, utilisation du code "ActiveCell", ainsi en fonction de la cellule sélectionner, il commencera à mettre des caches à partir de là, et quelques lignes en VBA?

=> si cette solution, merci de faire les boutons et renvoyer ton fichier ainsi obtenu, et si tu peux, commencer le code et nous demander à chaque fois que tu rencontre un problème.

Solution 2 :
Faire une UserForm avec des case à cocher (CheckBox).

=> si tu as prévu cette solution, merci de faire ton UserForm, qu'on voit l'esprit dans lequel tu veux la faire. Par contre, pour cette solution, il te faut absolument des bases en VBA! Car on pourra t'aider, mais pas tout te faire 😉

A te lire

Bonne soirée
 
Dernière édition:
Re : Copie de ligne au niveau de la cellule active

Bonsoir,

Ne sachant pas ton niveau, ni dans quelle direction tu vas, difficile de t'aider plus, mais en attendant, voici une astuce qui te servira peut-être.

Si tu utilise les CheckBox dans une UserForm ou directement sur ta feuille excel :
Code:
If CheckBoxSem1.Value = True Then
         Range("A1") = "X"
Else
         Range("A1") = ""
End If
Le code ci-dessus vérifie si la case correspond à cette CheckBox1 est coché, si oui, elle écrit une croix dans la cellule [A1], sinon écrit rien (cela permet d'effacer la cellule au cas où précédemment il y avait une croix ou ...).

Bon courage et à bientôt
 
Re : Copie de ligne au niveau de la cellule active

bonjour à tous et merci pour votre aide,
ci joint un fichier sur lequel j'ai ajouté un bouton (ouverture boite dial) qui ouvre un userform ou l'on peut faire de choix pour la saisie des tâches à effectuer (sousforme de croix dans le calendrier). En fait comme je suis debutant en VBA j'ai un peu bidouiller pour arriver au résultat (qui n'est pas parfait...).En effet, les cellules que je copie se trouve dans la meme feuille que le calendrier or il faudrai qu'elles soient sur la feuille "Liste" (pas reussi a trouver le code qui va bien pour transferer d'une feuille a l'autre avec la fonction ActiveCell !) ; ensuite je souhaiterai garder les formats de couleurs et d'encadrement du calendrier lors de la copie des cellules.
Voile j'espere que j'ai été clair dans mon explication, je débute vraiment et j'ai essayé de faire de mon mieux avec les notions de j'avais (moralité : aide toi et Excel Dowloads t'aidera !! )
Merci encore pour votre aide
Babylonzoo
 
Dernière modification par un modérateur:
Re : Copie de ligne au niveau de la cellule active

Bonsoir Babylonzoo,

babylonzoo à dit:
bon, le fichier est trop lourd je l'ai reduit au max. Mon fichier est t'il trop lourd, peut t'on le reduire ?

La première chose à faire lorsqu'un fichier dépasse la fameuse limite des 48,8Ko c'est de le zipper (compresser).

Méthode :
-> aller dans l'explorateur windows (raccourci : touche "windows" + touche "E").
-> chercher le répertoire où se trouve le fichier
-> le sélectionner : un seul clic (gauche si souris paramétré en droitier).
-> placer le curseur au dessus du fichier ainsi sélectionner
-> faire un clic droit (si souris toujours paramétré en droitier), puis cliquer sur "envoyer vers" / puis "dossier compresser"

Ainsi ton fichier sera compressé (au format *.zip).

Tu verras, la compression n'est pas non négligeable avec Excel!


babylonzoo à dit:
les cellules que je copie se trouve dans la meme feuille que le calendrier or il faudrai qu'elles soient sur la feuille "Liste"

Avant :
Code:
Range("G76:BQ76").Copy

Après :

Code:
[COLOR="Blue"]Sheets("Liste").[/COLOR]Range("G76:BQ76").Copy

Mais en effet, tu auras toujours le problème de la mise en forme!

Pour éviter cela, au lieu d'utiliser la fonction "copier"/"coller", utiliser la fonction "copier"/"collage spécial : valeur" (ou "formule").

Ce qui pourrais pas exemple donner :
Code:
Private Sub CommandButton1_Click()
Dim CelluleSélect As String

CelluleSélect = ActiveCell.Address

Range("G76:BQ76").Select
Application.CutCopyMode = False
Selection.Copy
Range(CelluleSélect).Select
Selection.PasteSpecial Paste:=xlPasteValues

End Sub

A la place de :
Code:
Private Sub CommandButton1_Click()
Range("G76:BQ76").Copy ActiveCell

End Sub

Après quand tu connaîtras mieux VBA, tu pourras éviter de passer par l'utilisation des lignes 75 et 76 où figure ton modèle que tu recopie, tout en insérant une boucle pour éviter les longueurs inutiles

En attendant, voici quelques astuces pour améliorer ta connaissance des UserForm.

En suivant l'explication donné là-bas, tu pourras ainsi nommer ton bouton Q3Week : "CommandButtonQ3Week" par exemple (actuellement appelé : CommandButton1).

Ta macro :
Code:
Private Sub CommandButton[B]1[/B]_Click()
Range("G76:BQ76").Copy ActiveCell

End Sub

Deviendra ainsi :
Code:
Private Sub [COLOR="Blue"]CommandButton[B]Q3Week[/B][/COLOR]_Click()
Range("G76:BQ76").Copy ActiveCell

End Sub

Ce qui tu en conviendra est plus facile à comprendre 😉

Et donner le nom "CommandButtonQ2Week" à ton bouton "Q2Week" (actuellement appelé : CommandButton2).

Penser à modifier ta seconde macro qui est lié à ce bouton de la même façon (remplacer Private Sub CommandButton2_Click() par Private Sub CommandButtonQ2Week_Click()

Bonne soirée
 
Re : Copie de ligne au niveau de la cellule active

Re,

Plus simple expliqué pas à pas :

Commençons par ta macro la plus facile : Private Sub CommandButton1_Click()

-> pour éviter le problème de mise en forme et ne pas avoir besoin de la ligne 76 :
Code:
ActiveCell = "X"
permet d'écrire une croix dans la cellule active

-> Idem mais plus pratique pour la suite :
Code:
Range(ActiveCell.Address) = "X"
permet d'écrire une croix dans la cellule active

-> Idem mais encore plus pratique et plus souple pour ton cas de figure :
Code:
Cells(ActiveCell.Row, ActiveCell.Column) = "X"
permet d'écrire une croix dans la cellule active

Ainsi tu pourras très facilement rajouter des variables, permettant ainsi la mise en place de ta boucle.


Code:
Cells(ActiveCell.Row [COLOR="Blue"]+ 2[/COLOR], ActiveCell.Column) = "X"
permet d'écrire une croix deux cellules en dessous de la cellule active

Si tu veux écrire une croix dans la cellule active, puis à partir de ce point toutes les 3 colonnes (correspond à ton cas Q3Week) et cela 5 fois, le code simple (sans boucle) sera :
Code:
Cells(ActiveCell.Row, ActiveCell.Column) = "X"
Cells(ActiveCell.Row, ActiveCell.Column + 3) = "X"
Cells(ActiveCell.Row, ActiveCell.Column + 6) = "X"
Cells(ActiveCell.Row, ActiveCell.Column + 9) = "X"
Cells(ActiveCell.Row, ActiveCell.Column + 12) = "X"

Idem mais avec une boucle :
Code:
[COLOR="Red"][B]For[/B][/COLOR] i = 0 [COLOR="Red"][B]To[/B][/COLOR] 12 [COLOR="Red"][B]Step[/B][/COLOR] 3
  Cells(ActiveCell.Row, ActiveCell.Column + i) = "X"
[COLOR="Red"][B]Next[/B][/COLOR] i

C'est plus court non? 😀

La boucle For i = 1 To n ... Next i

Signifie répéter ... n fois
i prend au début la valeur 1, il exécute le code : ... puis quand il arrive au mot next, il rajoute 1 à i (qui devient donc 2), il vérifie que 2 soit bien égale ou inférieur à n, et si oui, il exécute à nouveau le code : ....

Lorsque i prend la valeur n, il exécute une dernière fois le code : ... puis s'arrête.

La fonction Step z indique qu'au lieu de s'incrémenter de 1, la valeur i s'incrémente de z à chaque fois (très pratique pour ton cas de figure : écrire une croix dans la cellule ... toutes les z colonnes).

Faut que j'y aille, je te laisse déjà assimiler tout cela, l'essayer, le tester et le mettre en pratique dans ta macro : Private Sub CommandButton1_Click() et revenir ici pour nous donner tes remarques, difficultés, ...

Bon mercredi
 
Dernière édition:
Re : Copie de ligne au niveau de la cellule active

Merci a toi pour tes réponses et tes explications..........je vais digérer tout ceci et faire les tests necessaires....et peut etre me faire offrir une formation VBA. Tient une question : si tu avais un bouquin a me proposer pour me servir de guide dans ma demarche d'apprentissage?merci encore et a bientot pour vous montrer mes résultats
Babylonzoo
 
Re : Copie de ligne au niveau de la cellule active

Bonsoir Babylonzoo,

babylonzoo à dit:
si tu avais un bouquin a me proposer pour me servir de guide dans ma demarche d'apprentissage?

Difficile de te proposer quelque chose comme ça! Cela dépend :
-> de ton niveau actuel : savoir si tu veux un bouquin pour débutant, confirmé, ...

-> de ta facilité d'apprentissage et ta motivation : savoir si tu a besoin d'un livre très détaillé, avec pleins d'exemples, ou si tu as juste besoin et envie de la théorie, et te débrouiller seul pour la pratique.

-> de l'utilisation que tu veux en avoir!
* un bouquin très complet : une sorte de bible, d'encyclopédie. Te servira de référent chaque fois que tu cherchera quelque chose de précis, mais inadapté comme livre de cours.
* un bouquin

-> dépend également de ton degré "d'autodidacte". En fonction tu choisira plutôt un bouquin très détaillé ou plus généraliste (te débrouillant sur le net ou en tâtonnant pour apprendre le reste au fur et à mesure de tes besoins).

-> sans oublier le prix que tu es prêt à mettre! Certains bouquins font qu'un seul niveau, d'où l'obligation d'acheter la suite au fur et à mesure de ta progression. Te reviendra plus cher, mais sera surement plus complet.

Le mieux, c'est d'aller en librairie et tous les feuilleter. Car il faut également :

-> que le vocabulaire utilisé soit compréhensible de toi (certains livres utilisent un vocabulaire trop technique), car sinon tu vas vite te lasser.

-> que la présentation soit agréable à regarder et te plaise, qu'il y ait des illustrations clair, bien expliqué et compréhensible, car sinon la aussi, tu risque de te lasser.

La grande mode, c'est le livre avec le CD d'exercices, et/ou les exercices dispo. sur leurs sites.

Bonne recherche.

PS. : attention le public visé par le livre est souvent écrit en petit dans un coin, donc ouvre l'œil 😉
Expressions du style : "Niveau Débutant", "Niveau confirmé", ... ou "Public : débutant / initié" ou ...

Dans l'attente de voir tes résultats et tes questions éventuelles.
 
Dernière édition:
Re : Copie de ligne au niveau de la cellule active

Merci a toi pour tes infos que je suis en train de digérer !!
j'ai en tout cas bien pigé la saisie par boucle , sauf que lorsque tu as une saisie de croix a faire par ex le luni et mercredi l'exemple ne fonctionne pas vu que l'incrementation (z) est varaible ( 1 ou 4 ) dans ce cas . Mais l'autre soluce fonctionne bien dans ce cas.
je laisse le post ouvert car j'aurai surment d'autres questions.

babyloonzoo

j'ouvre un autre post pour un pb de TextBox)))
 
Re : Copie de ligne au niveau de la cellule active

Bonjour tous

Un avis personnel
A l'heure de l'ADSL et tutti quanti, il me semble plus rapide
(puisque qui dit apprendre Excel et VBA dit ordinateur allumé)
d'aller sur des sites dédiés à Excel

Avantage: possibilité de copier/coller les code VBA
plutôt que d'avoir à recopier un listing issu d'un livre.

Tu peux déjà beaucoup apprendre en parcourant les fils de discussions
de ce forum ,en essayant les codes proposés et les pièces jointes.

Tout cela tu ne le trouveras pas dans un livre.

Surtout que j'ai remarqué que beaucoup d'éditeurs reprennent quasiment
les mêmes exemples de code d'une version à l'autre
en faisant leur pub en titrant "Nouvelle édition"

Une dernière chose: certains ouvrages contiennent deux, trois chapitres
à présenter Windows, Excel, l'historique d'Excel or quand tu n'es plus débutant ces infos te sont d'aucune utilité.
 
Re : Copie de ligne au niveau de la cellule active

Bonjour Babylonzoo, le fil,

babylonzoo à dit:
sauf que lorsque tu as une saisie de croix a faire par ex le luni et mercredi l'exemple ne fonctionne pas vu que l'incrementation (z) est varaible ( 1 ou 4 ) dans ce cas . Mais l'autre soluce fonctionne bien dans ce cas.

Ben oui!!! Comme indiqué la macro que je t'ai donné ne gère que le cas de l'ancienne macro : "Private Sub CommandButton1_Click", fallait bien commencer par quelque chose! Et de préférence la plus facile, étant donné les connaissances qu'il te manquait... si j'avais fais la seconde macro et te l'avais expliqué, tu ferrais en ce moment de la brasse coulé 😉

Concernant ton ancienne macro : "Private Sub CommandButton2_Click", comme dit dont un de mes précédents post, il faut également la reprendre. Forcément puisque le résultat à obtenir est différent, la macro le sera également!
mais la logique reste identique bien que beaucoup plus complexe pour un débutant

J'avais espéré que fort de tes nombreuses et nouvelles connaissances récemment acquisent :
-> tu essayerais de les mettre en pratique pour la seconde macro
-> nous proposerez ton code fini, ou incomplet et accompagné de questions complémentaire
😉

Bon Dimanche
 
Re : Copie de ligne au niveau de la cellule active

Salut Babylonzoo,


Ta première macro modifié comme indiqué : après avoir renommé ton bouton :
Code:
Private Sub CommandButton[COLOR="Blue"]Q3Week[/COLOR]_Click()
   For i = 0 To 18 Step 3
      Cells(ActiveCell.Row, ActiveCell.Column + i) = "X"
   Next i
End Sub
partie modifié

Elle peut paraître simple de première abord, mais comme tu l'as remarqué, lorsqu'on débute, il faut s'accrocher avant d'arriver à ce résultat concis et propre (mais il existe plus propre et plus concis, mais ne voulant pas te faire peur et que cela reste compréhensible... 😉).

Voici ci dessous celle correspondant à ton second bouton : Q2Week
Code:
Private Sub CommandButton[COLOR="Blue"]Q2Week[/COLOR]_Click()
   [COLOR="Red"][B]For[/B][/COLOR] i = 0 [COLOR="Red"][B]To[/B][/COLOR] 18 Step 3
      [COLOR="Green"][B]If[/B][/COLOR] i / 2 - Int(i / 2) = 0 [COLOR="Green"][B]Then[/B][/COLOR]
          Cells(ActiveCell.Row, ActiveCell.Column + i) = "X"
      [COLOR="Green"][B]Else[/B][/COLOR]
          Cells(ActiveCell.Row, ActiveCell.Column + i) = "XX"
      [COLOR="Green"][B]End If[/B][/COLOR]
   [B][COLOR="Red"]Next[/COLOR][/B] i
End Sub

Comme tu peux le constater, pour un débutant, elle est beaucoup plus complexe et la compréhension de la première était nécessaire avant de passer à la seconde, puisqu'elle reprend sa logique en armature.

Insertion de la fonction If - Then - Else - End If dans ta boucle For - To - Next

---------------------------------------
La fonction If - Then - Else - End If est l'équivalent de ta fonction SI(ta condition;vrai;faux) que tu utilise couramment dans tes formules Excel. C'est son frère jumeaux en VBA.

Code:
[B][COLOR="Blue"]IF[/COLOR][/B] [I]ta condition[/I] [COLOR="Red"][B]Then[/B][/COLOR]
    [I]vrai[/I]
[COLOR="Green"][B]Else[/B][/COLOR]
    [I]faux[/I]
[COLOR="DarkSlateGray"][B]End If[/B][/COLOR]

---------------------------------------
Pourquoi avoir mis le test : i / 2 - Int(i / 2) = 0 pour savoir s'il faut mettre une ou deux croix?

Car cela signifie :
"i" divisé par deux - (la partie entière de "i" divisé par deux)

Cette formule permet de savoir si i est un nombre pair ou impair.

Lorsque le résultat de ce test est égale à zéro, c'est qu'il s'agit d'un nombre pair (écrire une croix), si le résultat est 0.5 (donc différent de zéro), il s'agit d'un nombre impair (écrire deux croix)

Voila la solution! Tu étais arrivé à quelque chose de ressemblant?

Tu trouveras tout cela ci-joint. Dans le fichier, j'ai également rajouté un bouton "quitter", toujours bien pratique 😉

Bien sûr avec la macro qui va bien :
Code:
Private Sub CommandButton[COLOR="Blue"]Quitter[/COLOR]_Click()
   Unload UserForm1
End Sub

Cela signifie, lorsqu'on clique sur le bouton "Quitter", fermer la boite de dialogue (UserForm) et arrêter le programme pour redonner la main à l'utilisateur.

Bonne soirée
 

Pièces jointes

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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour