Propagation d'information
Fermé
Xenos1705
Messages postés
93
Date d'inscription
lundi 19 octobre 2015
Statut
Membre
Dernière intervention
11 juin 2018
-
23 sept. 2016 à 16:19
Xenos1705 Messages postés 93 Date d'inscription lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018 - 26 sept. 2016 à 14:34
Xenos1705 Messages postés 93 Date d'inscription lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018 - 26 sept. 2016 à 14:34
A voir également:
- Propagation d'information
- Information d'identification réseau - Guide
- L'en-tête du document comporte une information qui n’apparaît pas à l'impression car elle est de couleur blanche. de quelle information s'agit-il ? ✓ - Forum LibreOffice / OpenOffice
- Impression blanche ✓ - Forum Imprimante
- Spouleur d'impression Windows : comment le relancer ? - Guide
- Propagation excel ✓ - Forum Excel
3 réponses
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
23 sept. 2016 à 17:12
23 sept. 2016 à 17:12
Bonjour
Option Explicit
Cdlmnt
Option Explicit
Const co As Byte = 1
Const lideb As Byte = 2
Public Sub OK()
Dim li1 As Long, li2 As Long, lifin As Long, s As String
lifin = Cells(Rows.Count, co).End(xlUp).Row
li1 = lideb
Do
s = Cells(li1, co)
li2 = li1 + 1
While Cells(li2, co) = "" And li2 < lifin
Cells(li2, co) = s
li2 = li2 + 1
Wend
li1 = li2
Loop Until li1 >= lifin
Cells(li1 + 1, co) = Cells(li1, co)
End Sub
Cdlmnt
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
26 sept. 2016 à 07:15
26 sept. 2016 à 07:15
Bonjour Xenos1705,
Salutations ccm81,
Voici un code qui s’applique à plusieurs feuilles (Feuil1 et Feuil2) :
Intégrer le code au milieu d'une procédure déjà existante n'est pas forcément judicieux.
Tu peux laisser le code dans une procédure isolée et faire appel à cette procédure depuis ton programme principal. Cela pourra te permettre de discerner plus facilement les différents traitements.
A+
Salutations ccm81,
Voici un code qui s’applique à plusieurs feuilles (Feuil1 et Feuil2) :
Sub Test()
Dim Ws As Worksheet
Dim DerLig As Long
Dim Cel As Range, Memo As Range
For Each Ws In Worksheets
If Ws.Name = "Feuil1" Or Ws.Name = "Feuil2" Then
DerLig = Ws.Range("D" & Rows.Count).End(xlUp).Row
Set Memo = Ws.Range("A1")
For Each Cel In Ws.Range("A2:A" & DerLig)
If Cel = "" Then
Cel.Value = Memo.Value
Else
Set Memo = Cel
End If
Next Cel
End If
Next Ws
End Sub
Intégrer le code au milieu d'une procédure déjà existante n'est pas forcément judicieux.
Tu peux laisser le code dans une procédure isolée et faire appel à cette procédure depuis ton programme principal. Cela pourra te permettre de discerner plus facilement les différents traitements.
A+
Xenos1705
Messages postés
93
Date d'inscription
lundi 19 octobre 2015
Statut
Membre
Dernière intervention
11 juin 2018
26 sept. 2016 à 08:32
26 sept. 2016 à 08:32
Hello,
Merci pour le complément mais je voulais que le code ne s'applique qu'à un onglet donc c'est parfait.
Par contre t'aurais une idée de comment faire ce qui suit:
concernant la dernière information à propager, le code ne la recopie qu'une fois, je suppose pck il s'arrete à la première ligne vide... Serait-il possible que la macro propage la dernière info jusqu'à la ligne qui détient la dernière cellule renseignée en colonne D?
Merci
A+
Merci pour le complément mais je voulais que le code ne s'applique qu'à un onglet donc c'est parfait.
Par contre t'aurais une idée de comment faire ce qui suit:
concernant la dernière information à propager, le code ne la recopie qu'une fois, je suppose pck il s'arrete à la première ligne vide... Serait-il possible que la macro propage la dernière info jusqu'à la ligne qui détient la dernière cellule renseignée en colonne D?
Merci
A+
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
>
Xenos1705
Messages postés
93
Date d'inscription
lundi 19 octobre 2015
Statut
Membre
Dernière intervention
11 juin 2018
26 sept. 2016 à 09:02
26 sept. 2016 à 09:02
Telle qu'elle est conçue, la procédure effectue déjà la recopie jusqu'à la dernière ligne renseignée dans la colonne D.
J'ai modifié le code pour ne prendre en compte qu'une seule feuille (Feuil1).
A+
J'ai modifié le code pour ne prendre en compte qu'une seule feuille (Feuil1).
Sub Test()
Dim DerLig As Long
Dim Cel As Range, Memo As Range
With Worksheets("Feuil1")
DerLig = .Range("D" & Rows.Count).End(xlUp).Row
Set Memo = .Range("A1")
For Each Cel In .Range("A2:A" & DerLig)
If Cel = "" Then
Cel.Value = Memo.Value
Else
Set Memo = Cel
End If
Next Cel
End With
End Sub
A+
Xenos1705
Messages postés
93
Date d'inscription
lundi 19 octobre 2015
Statut
Membre
Dernière intervention
11 juin 2018
26 sept. 2016 à 09:36
26 sept. 2016 à 09:36
Re,
Alors j'ai testé et c'est parfait je t'en remercie.
J'ai également isolé la procédure comme tu m'as conseillé et c'est effectivement plus clair.
Franchement, vous assurez, encore merci.
A+
Xenos
Alors j'ai testé et c'est parfait je t'en remercie.
J'ai également isolé la procédure comme tu m'as conseillé et c'est effectivement plus clair.
Franchement, vous assurez, encore merci.
A+
Xenos
Xenos1705
Messages postés
93
Date d'inscription
lundi 19 octobre 2015
Statut
Membre
Dernière intervention
11 juin 2018
26 sept. 2016 à 11:11
26 sept. 2016 à 11:11
Re,
Finalement, j'ai encore deux question:
1) Comment adapter le code pour qu'il copie la formule renseignée plutôt que la valeur?
2) Comment faire pour que le code s'applique à plusieurs colonnes afin que toutes les colonnes qui possèdent des lignes vides soient renseigées. Les colonnes doivent copier les infos de sa propre colonne et non celle des autres.
J'espère avoir été assez clair.
Redites mois si jamais.
Merci
Finalement, j'ai encore deux question:
1) Comment adapter le code pour qu'il copie la formule renseignée plutôt que la valeur?
2) Comment faire pour que le code s'applique à plusieurs colonnes afin que toutes les colonnes qui possèdent des lignes vides soient renseigées. Les colonnes doivent copier les infos de sa propre colonne et non celle des autres.
J'espère avoir été assez clair.
Redites mois si jamais.
Merci
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
>
Xenos1705
Messages postés
93
Date d'inscription
lundi 19 octobre 2015
Statut
Membre
Dernière intervention
11 juin 2018
26 sept. 2016 à 11:37
26 sept. 2016 à 11:37
De quelle formule parles-tu ?
De quelles colonnes parles-tu ?
Tu dois comprendre que sans exemple concret, précis et complet, la résolution demande un don de divination que je n'ai pas.
Pour joindre un fichier, tu peux utiliser https://www.cjoint.com/
A+
De quelles colonnes parles-tu ?
Tu dois comprendre que sans exemple concret, précis et complet, la résolution demande un don de divination que je n'ai pas.
Pour joindre un fichier, tu peux utiliser https://www.cjoint.com/
A+
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
26 sept. 2016 à 14:03
26 sept. 2016 à 14:03
Pour une colonne supplémentaire, ce n’est pas très compliqué. Il suffit de relancer la procédure sur la deuxième colonne après avoir adapté les lignes de code :
Pour la formule, il faut savoir ce que contiennent réellement les cellules de la colonne concernée (formule, valeur ou rien).
S’il s’agit simplement de copier la formule à la place la valeur, tu peux utiliser
A+
Set Memo = .Range("B1")
For Each Cel In .Range("B2:B" & DerLig)
Pour la formule, il faut savoir ce que contiennent réellement les cellules de la colonne concernée (formule, valeur ou rien).
S’il s’agit simplement de copier la formule à la place la valeur, tu peux utiliser
Cel.Formula = Memo.Formula
A+
Xenos1705
Messages postés
93
Date d'inscription
lundi 19 octobre 2015
Statut
Membre
Dernière intervention
11 juin 2018
26 sept. 2016 à 14:16
26 sept. 2016 à 14:16
Hello,
Je venais à l'instant d'essayer:
Par exemple j'ai une formule en B2 "=DATEVAL(A2)" et faisant ce qui est décrit ci-dessus je me retrouve avec "=DATEVAL(A2)" sur toutes les lignes alors que je souhaiterais "=DATEVAL(A3)" sur la ligne B3, "=DATEVAL(A4)" sur la ligne B4 est ainsi de suite.
Etant donné que j'ai l'info en B2 et que le reste de la colonne est vide, il serait peut être plus simple de dire à la macro de copier la formule qui se trouve en B2 et de la propager jusqu'en B???.
B??? corespondrait à la dernière ligne renseignée en colonne G.
Qu'en penses-tu?
Merci
Je venais à l'instant d'essayer:
Cel.Formula = Memo.Formulamais le problème c'est qu'il copie exactement la formule et la propage telle quelle alors je me retrouve avec le même résultat sur toutes les lignes.
Par exemple j'ai une formule en B2 "=DATEVAL(A2)" et faisant ce qui est décrit ci-dessus je me retrouve avec "=DATEVAL(A2)" sur toutes les lignes alors que je souhaiterais "=DATEVAL(A3)" sur la ligne B3, "=DATEVAL(A4)" sur la ligne B4 est ainsi de suite.
Etant donné que j'ai l'info en B2 et que le reste de la colonne est vide, il serait peut être plus simple de dire à la macro de copier la formule qui se trouve en B2 et de la propager jusqu'en B???.
B??? corespondrait à la dernière ligne renseignée en colonne G.
Qu'en penses-tu?
Merci
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
>
Xenos1705
Messages postés
93
Date d'inscription
lundi 19 octobre 2015
Statut
Membre
Dernière intervention
11 juin 2018
26 sept. 2016 à 14:24
26 sept. 2016 à 14:24
Est-ce que tu commences à sentir la difficulté à vouloir résoudre un problème lorsqu'on a pas tous les tenants et aboutissants ?
Teste avec :
A+
Teste avec :
Cel.FormulaR1C1 = Memo.FormulaR1C1
A+
Xenos1705
Messages postés
93
Date d'inscription
lundi 19 octobre 2015
Statut
Membre
Dernière intervention
11 juin 2018
26 sept. 2016 à 14:34
26 sept. 2016 à 14:34
J en ai réellement conscience et m en excuse.
C est exactement ce dont j'avais besoin.
Je te remercie encore pour tt.
C est exactement ce dont j'avais besoin.
Je te remercie encore pour tt.
25 sept. 2016 à 20:20
Je viens de tester le code et il est presque parfait... bravo
En fait presque pck concernant la dernière information à propager, le code ne la recopie qu'une fois, je suppose pck il s'arrete à la première ligne vide... Serait-il possible que la macro propage la dernière info jusqu'à la ligne qui détient la dernière cellule renseignée en colonne D?
Ensuite, 2 questions:
1) est-ce que je peux intégrer ce code au milieu d'une macro déjà existente ou dois-je l'exécuter individuellement de ma macro principale? L'idée n'est d'avoir qu'une seule macro..
2) Est ce code s'applique à tous les onglets ou seulement sur celui qui est actif? D'après ce que j'ai testé il me semble que c'est uniquement l'onglet actif...
Finalement, pourrais-tu me donner quelques explications sur ton code pck ca paraît bien différent de ce que j'ai pu voir jusqu'à maintenant...
Encore merci et bon boulot
Xenos