Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mémoriser les valeurs d'une plage

9 réponses
Avatar
LANIMAL
Bonjour,
J'enrage, je bloque sur un pb que j'imagine être élémentaire.
Les cellules A1, A2, A3 de la Feuil1 sont effacées, pour les besoins de
la procédure.
Avant de les effacer, je veux les mémoriser pour les coller plus tard
dans les cellules A1, A2, A3 de 54 feuilles Feuil1, Feuil2 ... Feuil54.
Comment et où stoker ces valeurs ? (Dans une variable MaPlage ou ... ?)
Comment les coller ensuite ?
(boucle ou sélection multiple des feuilles m'indifèrent)

J'ai déjà posé des questions voisines,
dont une le 2.12 à 21 h qui est restée sans réponse,
est-elle stupide ou difficile ? ?
Merci, si quelqu'un peut me décoincer, c'est toujours le 1er pas qui me
coûte beaucoup.

9 réponses

Avatar
Daniel.C
Bonjour.
Par exemple :
Public Plage As Range
Sub test()
Set Plage = [A1:B10]
Plage.Resize(2, 2).Copy [D3]
End Sub
Cordialement.
Daniel

Bonjour,
J'enrage, je bloque sur un pb que j'imagine être élémentaire.
Les cellules A1, A2, A3 de la Feuil1 sont effacées, pour les besoins de la
procédure.
Avant de les effacer, je veux les mémoriser pour les coller plus tard dans
les cellules A1, A2, A3 de 54 feuilles Feuil1, Feuil2 ... Feuil54.
Comment et où stoker ces valeurs ? (Dans une variable MaPlage ou ... ?)
Comment les coller ensuite ?
(boucle ou sélection multiple des feuilles m'indifèrent)

J'ai déjà posé des questions voisines,
dont une le 2.12 à 21 h qui est restée sans réponse,
est-elle stupide ou difficile ? ?
Merci, si quelqu'un peut me décoincer, c'est toujours le 1er pas qui me coûte
beaucoup.


Avatar
Youky \(BJ\)
Ceci à mettre dans un module, avant d'éffacer tu appel "memo"
et plus tard tu appeleras "copie"....
dans ton code il suffit de mettre le nom de la macro appelée
Une boucle est aussi possible et le Dim se situe en tête de module
Youky (BJ)

Dim a1, b1, c1

Sub memo()
a1 = Feuil1.[a1]:Feuil1.[a1].ClearContents
b1 = Feuil1.[b1]:Feuil1.[b1].ClearContents
c1 = Feuil1.[c1]:Feuil1.[c1].ClearContents
End Sub

Sub copie()
Feuil1.[a1] = a1
Feuil1.[b1] = b1
Feuil1.[c1] = c1
End Sub

"LANIMAL" a écrit dans le message de news:

Bonjour,
J'enrage, je bloque sur un pb que j'imagine être élémentaire.
Les cellules A1, A2, A3 de la Feuil1 sont effacées, pour les besoins de la
procédure.
Avant de les effacer, je veux les mémoriser pour les coller plus tard dans
les cellules A1, A2, A3 de 54 feuilles Feuil1, Feuil2 ... Feuil54.
Comment et où stoker ces valeurs ? (Dans une variable MaPlage ou ... ?)
Comment les coller ensuite ?
(boucle ou sélection multiple des feuilles m'indifèrent)

J'ai déjà posé des questions voisines,
dont une le 2.12 à 21 h qui est restée sans réponse,
est-elle stupide ou difficile ? ?
Merci, si quelqu'un peut me décoincer, c'est toujours le 1er pas qui me
coûte beaucoup.


Avatar
Fredo P.
Une condition, les noms des onglets doivent respecter ce format: "Feuil" &
N° de feuille
http://cjoint.com/?mftAyvl3fO
Dans Thiworkbook:

Private Sub Workbook_Open()
Dim Nbf!
Nbf = ActiveWorkbook.Sheets.Count
ReDim a(Nbf), b(Nbf), c(Nbf)
For Each Sh In ActiveWorkbook.Worksheets
i = Mid(Sh.Name, InStr(Sh.Name, "l") + 1, 2)
a(i) = Sh.Cells(1, 1)
b(i) = Sh.Cells(1, 2)
c(i) = Sh.Cells(1, 3)
Next
End Sub

Dans un module
Option Explicit

Public a(), b(), c()
Public Sh As Worksheet, i!
Sub efface()
For Each Sh In ActiveWorkbook.Worksheets
i = Mid(Sh.Name, InStr(Sh.Name, "l") + 1, 2)
Sh.Cells(1, 1) = ""
Sh.Cells(1, 2) = ""
Sh.Cells(1, 3) = ""
Next
End Sub

Sub ecrit()
On Error Resume Next
For Each Sh In ActiveWorkbook.Worksheets
i = Mid(Sh.Name, InStr(Sh.Name, "l") + 1, 2)
Sh.Cells(1, 1) = a(i)
Sh.Cells(1, 2) = b(i)
Sh.Cells(1, 3) = c(i)
Next
If Err > 0 Then
MsgBox "Données perdues"
Err.Clear
End If
End Sub
Sub ecritFactive()
On Error Resume Next
For Each Sh In ActiveWorkbook.Worksheets
i = Mid(Sh.Name, InStr(Sh.Name, "l") + 1, 2)
Sh.Cells(1, 1) = ""
Sh.Cells(1, 2) = ""
Sh.Cells(1, 3) = ""
Next
i = Mid(ActiveSheet.Name, InStr(ActiveSheet.Name, "l") + 1, 2)
Cells(1, 1) = a(i)
Cells(1, 2) = b(i)
Cells(1, 3) = c(i)
If Err > 0 Then
MsgBox "Données perdues"
Err.Clear
End If
End Sub



"LANIMAL" a écrit dans le message de
news:
Bonjour,
J'enrage, je bloque sur un pb que j'imagine être élémentaire.
Les cellules A1, A2, A3 de la Feuil1 sont effacées, pour les besoins de
la procédure.
Avant de les effacer, je veux les mémoriser pour les coller plus tard
dans les cellules A1, A2, A3 de 54 feuilles Feuil1, Feuil2 ... Feuil54.
Comment et où stoker ces valeurs ? (Dans une variable MaPlage ou ... ?)
Comment les coller ensuite ?
(boucle ou sélection multiple des feuilles m'indifèrent)

J'ai déjà posé des questions voisines,
dont une le 2.12 à 21 h qui est restée sans réponse,
est-elle stupide ou difficile ? ?
Merci, si quelqu'un peut me décoincer, c'est toujours le 1er pas qui me
coûte beaucoup.


Avatar
LANIMAL
Merci à toi aussi Youky
Je comprendrai jamais comment je peux passer à coté de choses aussi
basiques.
Par exemple, c'est la 1ère fois que je vois la possibilité d'aligner des
codes,séparés par ":".
Je te pose la même question subsidiaire qu'à Daniel :
Je navigue sur différents sites-tutoriels,
mais je n'ai pas trouvé de livre ou de site vraiment adaptés aux
débutants, avec de nombreux EXEMPLES SIMPLES.
Voilà pourquoi je suis capable de faire des trucs un peu compliqués,
tout en étant complètement creux sur des connaissances élémentaires.
Merci, si tu as une réponse... ?
Merci

Youky (BJ) a écrit :
Ceci à mettre dans un module, avant d'éffacer tu appel "memo"
et plus tard tu appeleras "copie"....
dans ton code il suffit de mettre le nom de la macro appelée
Une boucle est aussi possible et le Dim se situe en tête de module
Youky (BJ)

Dim a1, b1, c1

Sub memo()
a1 = Feuil1.[a1]:Feuil1.[a1].ClearContents
b1 = Feuil1.[b1]:Feuil1.[b1].ClearContents
c1 = Feuil1.[c1]:Feuil1.[c1].ClearContents
End Sub

Sub copie()
Feuil1.[a1] = a1
Feuil1.[b1] = b1
Feuil1.[c1] = c1
End Sub

"LANIMAL" a écrit dans le message de news:

Bonjour,
J'enrage, je bloque sur un pb que j'imagine être élémentaire.
Les cellules A1, A2, A3 de la Feuil1 sont effacées, pour les besoins de la
procédure.
Avant de les effacer, je veux les mémoriser pour les coller plus tard dans
les cellules A1, A2, A3 de 54 feuilles Feuil1, Feuil2 ... Feuil54.
Comment et où stoker ces valeurs ? (Dans une variable MaPlage ou ... ?)
Comment les coller ensuite ?
(boucle ou sélection multiple des feuilles m'indifèrent)

J'ai déjà posé des questions voisines,
dont une le 2.12 à 21 h qui est restée sans réponse,
est-elle stupide ou difficile ? ?
Merci, si quelqu'un peut me décoincer, c'est toujours le 1er pas qui me
coûte beaucoup.






Avatar
LANIMAL
Merci Daniel de m'avoir aidé dans ce fameux 1er pas.
Je suis revenu voir l'Aide VB...
Pourquoi ai-je toujours sauté la ligne "Copy, méthode (Core VBA)" ? ?
qui donne la forme élémentaire "Object.Copy destination"
(mais sans proposer une seule ligne d'exemple !)
Merci encore, ta proposition est très pédagogique.

Question subsidiaire qui me démange depuis longtemps :
Je navigue bien sur différents sites-tutoriels,
Mais je n'ai pas trouvé de livre ou de site vraiment adapté aux
débutants, avec de nombreux EXEMPLES SIMPLES.
Voilà pourquoi je suis capable de faire des trucs un peu compliqués,
tout en étant complètement creux sur des connaissances élémentaires.
Merci, si tu as une réponse... ?
Merci

Daniel.C a écrit :
Bonjour.
Par exemple :
Public Plage As Range
Sub test()
Set Plage = [A1:B10]
Plage.Resize(2, 2).Copy [D3]
End Sub
Cordialement.
Daniel

Bonjour,
J'enrage, je bloque sur un pb que j'imagine être élémentaire.
Les cellules A1, A2, A3 de la Feuil1 sont effacées, pour les besoins
de la procédure.
Avant de les effacer, je veux les mémoriser pour les coller plus tard
dans les cellules A1, A2, A3 de 54 feuilles Feuil1, Feuil2 ... Feuil54.
Comment et où stoker ces valeurs ? (Dans une variable MaPlage ou ... ?)
Comment les coller ensuite ?
(boucle ou sélection multiple des feuilles m'indifèrent)

J'ai déjà posé des questions voisines,
dont une le 2.12 à 21 h qui est restée sans réponse,
est-elle stupide ou difficile ? ?
Merci, si quelqu'un peut me décoincer, c'est toujours le 1er pas qui
me coûte beaucoup.






Avatar
Daniel.C
Désolé d'avoir répondu à côté... Si les cellules sont effacées, la
variable est le reflet de la plage, alors, elles n'existent pas non
plus dans la variable. Pour ce qui est du tutoriel, je te conseillerais
d'acheter un bouquin pour bien débuter.
Daniel

Merci Daniel de m'avoir aidé dans ce fameux 1er pas.
Je suis revenu voir l'Aide VB...
Pourquoi ai-je toujours sauté la ligne "Copy, méthode (Core VBA)" ? ?
qui donne la forme élémentaire "Object.Copy destination"
(mais sans proposer une seule ligne d'exemple !)
Merci encore, ta proposition est très pédagogique.

Question subsidiaire qui me démange depuis longtemps :
Je navigue bien sur différents sites-tutoriels,
Mais je n'ai pas trouvé de livre ou de site vraiment adapté aux débutants,
avec de nombreux EXEMPLES SIMPLES.
Voilà pourquoi je suis capable de faire des trucs un peu compliqués,
tout en étant complètement creux sur des connaissances élémentaires.
Merci, si tu as une réponse... ?
Merci

Daniel.C a écrit :
Bonjour.
Par exemple :
Public Plage As Range
Sub test()
Set Plage = [A1:B10]
Plage.Resize(2, 2).Copy [D3]
End Sub
Cordialement.
Daniel

Bonjour,
J'enrage, je bloque sur un pb que j'imagine être élémentaire.
Les cellules A1, A2, A3 de la Feuil1 sont effacées, pour les besoins de la
procédure.
Avant de les effacer, je veux les mémoriser pour les coller plus tard dans
les cellules A1, A2, A3 de 54 feuilles Feuil1, Feuil2 ... Feuil54.
Comment et où stoker ces valeurs ? (Dans une variable MaPlage ou ... ?)
Comment les coller ensuite ?
(boucle ou sélection multiple des feuilles m'indifèrent)

J'ai déjà posé des questions voisines,
dont une le 2.12 à 21 h qui est restée sans réponse,
est-elle stupide ou difficile ? ?
Merci, si quelqu'un peut me décoincer, c'est toujours le 1er pas qui me
coûte beaucoup.








Avatar
Youky \(BJ\)
Bonsoir LANIMAL,
Les meilleurs exemples se trouvent sur ce forum, bien sur, un bouquin sous
la main est pas mal.
Pour ma part je n'ai pas de livre Excel seulement "Visual Basic 5" que
j'utilisais autrefois et qui possède 917 pages.
Le meilleur est de graver dans ta mémoire chaque truc important.
Bien avoir l'aide (touche "F1") installée qui ne l'ai pas par défaut.
Des visites sur Excelabo te donneras la chance de trouver des codes
miracles.
PS: pas la peine d'apprendre le site par coeur, suffit de savoir bien
naviguer pour retrouver le code désiré.
Encore une chose ne pas avoir peur de modifier ou faire des boulettes et
bugger dans le code.
J'ai zappé dans ta demande le nombre de feuille pour la recopie mais qui
doit pas poser PB puique les variables
sont déja retenues en mémoire.
Youky (BJ)


"LANIMAL" a écrit dans le message de news:

Merci à toi aussi Youky
Je comprendrai jamais comment je peux passer à coté de choses aussi
basiques.
Par exemple, c'est la 1ère fois que je vois la possibilité d'aligner des
codes,séparés par ":".
Je te pose la même question subsidiaire qu'à Daniel :
Je navigue sur différents sites-tutoriels,
mais je n'ai pas trouvé de livre ou de site vraiment adaptés aux
débutants, avec de nombreux EXEMPLES SIMPLES.
Voilà pourquoi je suis capable de faire des trucs un peu compliqués,
tout en étant complètement creux sur des connaissances élémentaires.
Merci, si tu as une réponse... ?
Merci

Youky (BJ) a écrit :
Ceci à mettre dans un module, avant d'éffacer tu appel "memo"
et plus tard tu appeleras "copie"....
dans ton code il suffit de mettre le nom de la macro appelée
Une boucle est aussi possible et le Dim se situe en tête de module
Youky (BJ)

Dim a1, b1, c1

Sub memo()
a1 = Feuil1.[a1]:Feuil1.[a1].ClearContents
b1 = Feuil1.[b1]:Feuil1.[b1].ClearContents
c1 = Feuil1.[c1]:Feuil1.[c1].ClearContents
End Sub

Sub copie()
Feuil1.[a1] = a1
Feuil1.[b1] = b1
Feuil1.[c1] = c1
End Sub

"LANIMAL" a écrit dans le message de news:

Bonjour,
J'enrage, je bloque sur un pb que j'imagine être élémentaire.
Les cellules A1, A2, A3 de la Feuil1 sont effacées, pour les besoins de
la procédure.
Avant de les effacer, je veux les mémoriser pour les coller plus tard
dans les cellules A1, A2, A3 de 54 feuilles Feuil1, Feuil2 ... Feuil54.
Comment et où stoker ces valeurs ? (Dans une variable MaPlage ou ... ?)
Comment les coller ensuite ?
(boucle ou sélection multiple des feuilles m'indifèrent)

J'ai déjà posé des questions voisines,
dont une le 2.12 à 21 h qui est restée sans réponse,
est-elle stupide ou difficile ? ?
Merci, si quelqu'un peut me décoincer, c'est toujours le 1er pas qui me
coûte beaucoup.







Avatar
LANIMAL
Merci Fredo, pour cet exemple concret.
Il faut que je digère...
mais je vois déjà que je vais apprendre des choses.
Bonne soirée.

Fredo P. a écrit :
Une condition, les noms des onglets doivent respecter ce format: "Feuil" &
N° de feuille
http://cjoint.com/?mftAyvl3fO
Dans Thiworkbook:

Private Sub Workbook_Open()
Dim Nbf!
Nbf = ActiveWorkbook.Sheets.Count
ReDim a(Nbf), b(Nbf), c(Nbf)
For Each Sh In ActiveWorkbook.Worksheets
i = Mid(Sh.Name, InStr(Sh.Name, "l") + 1, 2)
a(i) = Sh.Cells(1, 1)
b(i) = Sh.Cells(1, 2)
c(i) = Sh.Cells(1, 3)
Next
End Sub

Dans un module
Option Explicit

Public a(), b(), c()
Public Sh As Worksheet, i!
Sub efface()
For Each Sh In ActiveWorkbook.Worksheets
i = Mid(Sh.Name, InStr(Sh.Name, "l") + 1, 2)
Sh.Cells(1, 1) = ""
Sh.Cells(1, 2) = ""
Sh.Cells(1, 3) = ""
Next
End Sub

Sub ecrit()
On Error Resume Next
For Each Sh In ActiveWorkbook.Worksheets
i = Mid(Sh.Name, InStr(Sh.Name, "l") + 1, 2)
Sh.Cells(1, 1) = a(i)
Sh.Cells(1, 2) = b(i)
Sh.Cells(1, 3) = c(i)
Next
If Err > 0 Then
MsgBox "Données perdues"
Err.Clear
End If
End Sub
Sub ecritFactive()
On Error Resume Next
For Each Sh In ActiveWorkbook.Worksheets
i = Mid(Sh.Name, InStr(Sh.Name, "l") + 1, 2)
Sh.Cells(1, 1) = ""
Sh.Cells(1, 2) = ""
Sh.Cells(1, 3) = ""
Next
i = Mid(ActiveSheet.Name, InStr(ActiveSheet.Name, "l") + 1, 2)
Cells(1, 1) = a(i)
Cells(1, 2) = b(i)
Cells(1, 3) = c(i)
If Err > 0 Then
MsgBox "Données perdues"
Err.Clear
End If
End Sub



"LANIMAL" a écrit dans le message de
news:
Bonjour,
J'enrage, je bloque sur un pb que j'imagine être élémentaire.
Les cellules A1, A2, A3 de la Feuil1 sont effacées, pour les besoins de
la procédure.
Avant de les effacer, je veux les mémoriser pour les coller plus tard
dans les cellules A1, A2, A3 de 54 feuilles Feuil1, Feuil2 ... Feuil54.
Comment et où stoker ces valeurs ? (Dans une variable MaPlage ou ... ?)
Comment les coller ensuite ?
(boucle ou sélection multiple des feuilles m'indifèrent)

J'ai déjà posé des questions voisines,
dont une le 2.12 à 21 h qui est restée sans réponse,
est-elle stupide ou difficile ? ?
Merci, si quelqu'un peut me décoincer, c'est toujours le 1er pas qui me
coûte beaucoup.






Avatar
ChristianM
Peut-être là :
http://bidou.developpez.com/article/VBA/


--
ChristianM


"LANIMAL" a écrit dans le message de news:
%
Merci Daniel de m'avoir aidé dans ce fameux 1er pas.
Je suis revenu voir l'Aide VB...
Pourquoi ai-je toujours sauté la ligne "Copy, méthode (Core VBA)" ? ?
qui donne la forme élémentaire "Object.Copy destination"
(mais sans proposer une seule ligne d'exemple !)
Merci encore, ta proposition est très pédagogique.

Question subsidiaire qui me démange depuis longtemps :
Je navigue bien sur différents sites-tutoriels,
Mais je n'ai pas trouvé de livre ou de site vraiment adapté aux débutants,
avec de nombreux EXEMPLES SIMPLES.
Voilà pourquoi je suis capable de faire des trucs un peu compliqués,
tout en étant complètement creux sur des connaissances élémentaires.
Merci, si tu as une réponse... ?
Merci

Daniel.C a écrit :
Bonjour.
Par exemple :
Public Plage As Range
Sub test()
Set Plage = [A1:B10]
Plage.Resize(2, 2).Copy [D3]
End Sub
Cordialement.
Daniel

Bonjour,
J'enrage, je bloque sur un pb que j'imagine être élémentaire.
Les cellules A1, A2, A3 de la Feuil1 sont effacées, pour les besoins de
la procédure.
Avant de les effacer, je veux les mémoriser pour les coller plus tard
dans les cellules A1, A2, A3 de 54 feuilles Feuil1, Feuil2 ... Feuil54.
Comment et où stoker ces valeurs ? (Dans une variable MaPlage ou ... ?)
Comment les coller ensuite ?
(boucle ou sélection multiple des feuilles m'indifèrent)

J'ai déjà posé des questions voisines,
dont une le 2.12 à 21 h qui est restée sans réponse,
est-elle stupide ou difficile ? ?
Merci, si quelqu'un peut me décoincer, c'est toujours le 1er pas qui me
coûte beaucoup.