- Reporter automatiquement une ligne sur une autre feuille
- Comment supprimer une feuille sur word - Guide
- Comment aller à la ligne sur excel - Guide
- Partager photos en ligne - Guide
- Vente en ligne particulier - Guide
- Comment imprimer en a5 sur une feuille a4 - Guide
13 réponses
29 janv. 2024 à 15:29
Bonjour.
Est-ce qu'il s'agit toujours de la première ligne ...oui/non
Est-ce que si vous changez les valeurs A1 et B1 il faut ajouter une ligne supplémentaire sur les autres feuilles ,,,Oui/Non !
Alors non pas tjs de la première ligne pour l'autre question je ne sais pas en fait ce que je voudrais faire c'est reporter les paiements en plusieurs fois pour suivre les échéances. Par exemple si une personne paye en 3 fois je l'inscris en janvier donc premier paiement et les deux autres paiements reporter sa ligne sur les feuilles février et mars. Donc en Avril il ne faut plus qu'elle apparaisse. Idem pour les paiements en 6 fois.
Modifié le 29 janv. 2024 à 16:14
Bonjour,
Le plus simple est de réaliser un exemple manuellement, 2 ou 3 cas, sur un classeur et vous le mettez sur Accueil de Cjoint.com et poster le lien.
Je pense qu'il va falloir une macro (VBA)!
Dsl pour l'attente je peaufinais le fichier, j'ai fait une copie j'ai mis toutes les formules que je souhaitais et les mises en formes uniquement sur l'onglet Nov 23 je copierai plus tard sur les autres onglets. Du coup est-il possible par exemple si sur l'onglet Nov 23 la ligne 22 (c'est la première qui a un paiement en plusieurs fois) la cellule J22 est noté "CASH 6X" et I22 est noté "1" reporter la ligne entière avec les mêmes mises en forme et formules 5 fois sur les 5 prochains onglets soit une fois en Dec 23, une fois en Janv 24, Fev 24, Mars 24, Avril 24 en revanche il faut que la cellule I22 se modifie à chaque fois Si en Nov 23 c'est noté 1 mettre dans l'onglet Dec 23 en I15 mettre 2 (Je précise, il faut que la ligne se recopie au début à chaque fois, c'est à dire qu'on doit voir apparaître les paiements en plusieurs fois en premier dans le tableau donc si j'écris dans une ligne et qu'au dernier moment dans l'onglet précédent je mets à jour un paiement que j'aurais oublié, ajouter une ligne au dessus de la ligne pour que les paiements en plusieurs fois soient regroupés ensemble) en Janv 24 en I15 mettre 3 ainsi de suite. Idem pour les paiements en trois fois, il faut que ça soit reporté 2 fois, se sont lignes marqués "CASH X3" en cellule I donc par exemple si le premier paiement est en décembre, le deuxième sera janvier et le dernier en février.
Voilà je ne sais pas si j'ai bien expliqué et si ce n'est pas trop dur à mettre en place. J'ajoute que ce fichier est un fichier partagé avec mes collègues et que ceci n'est qu'une copie, du coup si vous arrivez à m'aider comment dois-je recopier la macro je ne sais pas où c'est je n'ai jamais fait.
Je vous remercie infiniment :)
Voici le lien
https://www.cjoint.com/c/NAEtuf2NmJM
Voici les captures d'écran qui montre le vrai fichier car sur celui que je vous ai envoyé toutes couleurs ni sont pas bizarre en fait je viens de comprendre que le vrai tableau c'est sur google sheet, j'ai tout copié sur excel mais le rendu n'est pas le même : https://www.cjoint.com/c/NAEtxU3KfVM et https://www.cjoint.com/c/NAEtzhzcohM
31 janv. 2024 à 16:49
Bonjour ;
Merci pour le fichier.
Je pense qu’il est nécessaire d’utilise le VBA (macro) pour réaliser votre demande.
Note : je constate que les colonnes de (Nov 23) ne correspondent pas avec les feuilles de Jan, Fev, etc. Ceci depuis la colonne [ I ]. De ce fait lors d’une copie de ligne il y aura un décalage des données qui ne correspondront pas aux titres des colonnes.
Question : A qu’elle moment il faut que la ligne soit recopier (lors de qu’elle entrée de donnée …par exemple lors de la validation en colonne J :J [Offre]
Merci du retour.
Déjà, merci de vous intéresser à ma demande un peu complexe. Oui j'ai pas fini de copier toutes les colonnes, je viens de le faire. Alors je ne suis pas sûr d'avoir bien tout compris pour l'autre question, veuillez m'excuser de mon manque de compréhension ;)
Toutefois je répondrais ceci : lorsqu'une ligne doit être recopiée, il faut qu'elle possède (je vais donner les valeurs réelles) en F="Closé" en I=1 ou 2 ou 3 ou 4 ou 5 ou 6 et aussi surtout en J marqué "Cash X6" ou "Cash X3"
Mais attention finalement se ne sont que les lignes comprenant en I = 2 ou 3 ou 4 ou 5 ou 6 qui sont réellement déplacées parce que la ligne comprenant la Cellule I=1 est concernée mais pas déplacée, tout part d'elle. Du coup lorsque les conditions sont réunies c'est à dire par exemple en F="Closé" en I=1 et en J= "Cash X6" alors cette ligne doit être recopiée 5 fois, soit une fois par mois sur les 5 autres mois suivants.
Mais attention autre condition, il faut que les cellules F et I changent de texte à chaque fois pour F="Done" et non plus "Closé" pour les 5 autres mois suivants, en revanche pour I ça se corse un peu car il faut que le chiffre corresponde au nombre de paiement à chaque fois. C'est à dire si c'est le deuxième paiement I affichera 2 si c'est le troisième paiement I affichera 3 ainsi de suite.
ChatGPT m'a fournis cette formule mais ça ne fonctionne pas, pouvez vous y jeter un oeil svp ? Merci pour tout :)
/** @OnlyCurrentDoc */functionRepartirPaiements() {
varfeuille = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Nov 23");
vardernierLigne = feuille.getLastRow();
for (vari = 15; i <= dernierLigne; i++) {
varcelluleF = feuille.getRange("F" + i).getValue();
varcelluleJ = feuille.getRange("J" + i).getValue();
varcelluleI = feuille.getRange("I" + i).getValue();
if (celluleF === "Closé" && celluleJ === "CASH X3" && celluleI === 1) {
varmois = feuille.getRange("I" + i).getValue();
if (mois < 5) {
varfeuilleSuivante = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(getMonthName(mois + 1) + "24");
if (!feuilleSuivante) {
SpreadsheetApp.getActiveSpreadsheet().insertSheet(getMonthName(mois + 1) + "24");
}
varnouvelleLigne = 15;
feuille.getRange("A" + i + ":Z" + i).copyTo(feuilleSuivante.getRange("A" + nouvelleLigne + ":Z" + nouvelleLigne), { contentsOnly: true });
feuilleSuivante.getRange("F" + nouvelleLigne).setValue("Done");
feuilleSuivante.getRange("J" + nouvelleLigne).setValue("CASH X3");
feuilleSuivante.getRange("I" + nouvelleLigne).setValue(mois + 1);
feuille.getRange("C" + i).setValue("Done");
}
} elseif (celluleF === "Closé" && celluleJ === "CASH X6" && celluleI === 1) {
varmoisX6 = feuille.getRange("I" + i).getValue();
if (moisX6 < 5) {
varfeuilleSuivanteX6 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(getMonthName(moisX6 + 1) + "24");
if (!feuilleSuivanteX6) {
SpreadsheetApp.getActiveSpreadsheet().insertSheet(getMonthName(moisX6 + 1) + "24");
}
varnouvelleLigneX6 = 15;
feuille.getRange("A" + i + ":Z" + i).copyTo(feuilleSuivanteX6.getRange("A" + nouvelleLigneX6 + ":Z" + nouvelleLigneX6), { contentsOnly: true });
feuilleSuivanteX6.getRange("F" + nouvelleLigneX6).setValue("Done");
feuilleSuivanteX6.getRange("J" + nouvelleLigneX6).setValue("CASH X6");
feuilleSuivanteX6.getRange("I" + nouvelleLigneX6).setValue(moisX6 + 1);
feuille.getRange("C" + i).setValue("Done");
}
}
}
}
functiongetMonthName(month) {
varmonths = [
"Janv",
"Fev",
"Mars",
"Avr",
"Mai",
"Juin",
"Juil",
"Aout",
"Sept",
"Oct",
"Nov",
"Dec",
"Oct 23",
"Nov 23",
"Dec 23"
];
returnmonths[month - 1];
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionModifié le 1 févr. 2024 à 16:51
Bonjour,
Je n'ai pas pris en compte votre message précédent et de plus le code ChatGPT c'est du n'importe quoi...!
Voici ma proposition. J’ai adapté les colonnes car elles n’étaient pas égales. Les feuilles sont nommées avec le mois y compris l’année.
En plus j’ai ajouté une colonne W:W] pour contrôle si les copies de ligne sont réalisées (ne pas modifier car utiliser par la macro… !)
J’ai réalisé pour le cas de la ligne 22 de la feuille Nov 23.
A vous de réaliser les autres cas, La macro se déclenche lorsque vous entrez/validez la valeur de la cellule de la colonne [Offre]
La suite se fera selon vos commentaires.
Bonne découverte : https://www.cjoint.com/c/NBbpYsYJkMZ
1 févr. 2024 à 18:40
Bonjour,
Simplement enregistrer le classeur puis le fermer et le rouvrir et ensuite accepter les macros (petit message qui s'affiche)
2 févr. 2024 à 08:52
Bonjour,
J’ai pensé qu’il serait bien de préciser sur les feuilles le début des report d’acompte et celui des écritures du mois.
Voici ma proposition : https://www.cjoint.com/c/NBch0cOiioZ
Merci beaucoup a priori ça à l'air de fonctionner et ce que vous avez fait est une très bonne idée je vous remercie. Puis-je svp vous demander de remettre en colonne I la valeur du paiement comme vous avez fait l'autre fois, c'est à dire que lorsque la ligne est recopiée, I doit changer de valeur mais aussi la cellule F. Si c'est la ligne 22 du mois de Nov 23 qui doit être recopiée car c'est un paiement en trois par exemple ça sera écrit : F="Closé" en I=1 et les mois suivants ça change, en Dec : 23 F="Done" en I=2 et le dernier paiement sera en Janv 24 : en Dec 23 F="Done" en I=3 idem pour les paiements en 6 fois I = 2 puis 3 puis 4 puis 5 dans ces mois respectifs. Merci beaucoup pour votre aide. J'adore Excel ça me passionne ! Avec votre collaboration c'est super motivant merci beaucoup.
Modifié le 2 févr. 2024 à 17:12
Bonjour,
Pour le closé changé sur [Done] se n'est pas faisable car vous avez une liste déroulante en colonne F:F est la valeur Done n'y figure pas.
Pour l'incrémentation En colonne I:I c'est OK je vais le contrôler.
Note: finalement je vais ajouter la valeur [Done] dans votre liste.
2 févr. 2024 à 21:53
Bonjour,
Voici la proposition avec les corrections, En plus j’ai ajouté une feuille ´Mes listes] où vous avez les données pour les 3 listes déroulantes et de cette manière si vous avez une correction/ajout …de valeurs il vous suffit de modifier dans ces lites et ainsi se sera valable pour toutes les feuilles (pas de modifications sur chacune des feuilles).
J’ai testé sur les lignes 25 et 31. Je vous propose que vous le fassiez sur les autres cas.
Merci du retour qui me permettra de finaliser le tout
Le fichier :https://www.cjoint.com/c/NBcu1flVOAZ
Modifié le 5 févr. 2024 à 11:33
Bonjour,
Eh bien là c'est super que vous mentionnez maintenant que vous êtes avec [Google sheets] et je pense que les macros Excel ne sont pas compatibles.
Est-il possible de voir le fichier sur google sheets?
5 févr. 2024 à 16:17
Bonjour,
Merci, cependant il m'est impossible de convertir les macros VBA Excel vers le Google Apps Script et le langage de programmation JavaScript.
Désolé.
Modifié le 5 févr. 2024 à 18:49
Bonjour,
Les 2 macros se trouvent dans le classeur que je vous ai transmis.
Touche Alt+F11 et sur module de la feuille NOV 23 et l'autre sur module lepingou
Merci je dois il y a plein de petites fenêtres avec des codes je dois tout recopier ?
Est-ce ça la macro en entier svp ?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 And Target.Row > 14 Then
x = "": nsh = "": nuli = ""
If Target = "CASH divisé X6" And Target.Offset(0, -1) = 1 Or Target = "CASH divisé X3" And Target.Offset(0, -1) Then
If Range("W" & Target.Row) = "Oui" Then Exit Sub 'Si déjà recopier sortir
x = CInt(Right(Target, 1)) - 1
nsh = ActiveSheet.Name
nuli = Target.Row
copierXfois x, nsh, nuli
End If
End If
End Sub
6 févr. 2024 à 16:41
Bonjour,
Oui c'est correct, il manque la macro unique: Voici les deux code:
' A mettre sur le module de chaque Feuil2(Nov 23), Feuil3(Dec 23)....etc.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 And Target.Row > 14 Then
x = "": nsh = "": nuli = ""
If Target = "CASH divisé X6" And Target.Offset(0, -1) = 1 Or Target = "CASH divisé X3" And Target.Offset(0, -1) Then
If Range("W" & Target.Row) = "Oui" Then Exit Sub 'Si déjà recopier sortir
x = CInt(Right(Target, 1)) - 1
nsh = ActiveSheet.Name
nuli = Target.Row
copierXfois x, nsh, nuli
End If
End If
End Sub
'A mettre dans un module (exemple Module 1 Dans mon exemple je l'ai nommée : lepingou)..
Sub copierXfois(a, b, c)
x = a: nsh = b: nuli = c: maplage = d
'maplage = Range("A" & nuli & ":W" & nuli)
Sheets(nsh).Range("W" & nuli) = "Oui"
abm = Array("Jan", "Fev", "Mars", "Avril", "Mai", "Juin", "Juil", "Aout", "Sept", "Oct", "Nov", "Dec")
m = Left(nsh, Len(nsh) - 3)
num = Right(nsh, 2)
refD = DateSerial(num, 11, 1)
'mois = [a13]
'd = ActiveSheet.Name
po = Application.Match(m, abm, 0)
Application.ScreenUpdating = False
Application.EnableEvents = False
For aj = 1 To x
num = Month(WorksheetFunction.EDate(refD, aj))
nua = Year(WorksheetFunction.EDate(refD, aj))
mon = abm(num - 1)
nua2 = Right(nua, 2)
nosh = mon & " " & nua2
'***************
Range("A" & nuli & ":W" & nuli).Select
Range("W" & nuli).Activate
Selection.Copy
Sheets(nosh).Select
Range("A16").Select
Selection.Insert Shift:=xlDown
Range("F16") = "Done"
Range("I16") = aj + 1
Range("W16") = "Oui"
Sheets(nsh).Select
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
Application.EnableEvents = True
MsgBox "la ligne est copiée sur les " & x & " suivants.Dernier: " & nosh
Range("A14").Select
End Sub
Bonne suite.