Recuperation de données pour impression

Le
Philippe
bonjour

j'ai 1 feuille excel avec 115 lignes pour lesquelles j'ai des données en
colonne de M à CV et en colonne B j'ai donc 115 noms de ville
je voudrais mettre les données sur une 2eme feuille mais avec les données en
colonne C à M sur ligne 20 à 27 pour permettre une impression par ville et
donc une meilleure présentation
-soit sur cette 2eme feuille je donne le nom de la ville et on va chercher
les données sur la 1ere feuille
soit encore mieux les impressions de cette 2eme feuille se font
automatiquement pour chaque ville individuellementJe ne sais pas si je suis
clair
merci de votre aide si vous pouviez me donner le principe et j'essayerais
d'adaper
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Hervé
Le #20419071
Bonjour Philippe,

Un début à creuser (à mettre dans un module standard, adapter le nom des
feuilles et l'impression) :

Sub RechercheVille()

Dim Fe1 As Worksheet
Dim Fe2 As Worksheet
Dim Plage As Range
Dim PlageVille As Range
Dim Cel As Range
Dim I As Integer
Dim J As Integer
Dim Ligne As Integer
Dim Ville As String

'affiche une boîte de dialogue pour récupérer
'le nom de la ville (attention aux minuscules
'et majuscules)
Ville = InputBox("Quelle ville ?", "Ville.", "")

'défini les feuilles de travail
'feuille où sont stockées les données
Set Fe1 = Worksheets("Feuil1")

'feuille de destination
Set Fe2 = Worksheets("Feuil2")

'plage de recherche des noms de villes
Set PlageVille = Fe1.[B1:B115]

'plage de recherche des noms de villes si la liste
'doit évoluée
'----
'With Fe1
' Set PlageVille = .Range(.[B1], .[B65536].End(xlUp))
'End With
'----
'si un nom a été saisi, effectue la recherche et colle
'les données correspondantes dans la 2ème feuille
'en C20:M27
If Ville <> "" Then

Set Cel = PlageVille.Find(Ville, , xlValues)

If Not Cel Is Nothing Then

Ligne = Cel.Row

J = 19

For I = 1 To 88 Step 11

With Fe1
Set Plage = .Range(.Cells(Ligne, 12 + I), _
.Cells(Ligne, 22 + I))
End With

J = J + 1

Fe2.Range("C" & J).Resize(, 11).Value = Plage.Value

Next

'Impression de la feuille de destination
'aperçu avant impression
'----
'Fe2.PrintPreview
'----
'impression
Fe2.PrintOut

Else

MsgBox "La ville '" & Ville & "' n'existe pas dans" & _
" le tableau ou a été mal orthographiée !"

End If

End If

Set Cel = Nothing
Set Plage = Nothing
Set PlageVille = Nothing
Set Fe1 = Nothing

End Sub

Hervé.




"Philippe" news:
bonjour

j'ai 1 feuille excel avec 115 lignes pour lesquelles j'ai des données en
colonne de M à CV et en colonne B j'ai donc 115 noms de ville
je voudrais mettre les données sur une 2eme feuille mais avec les données
en colonne C à M sur ligne 20 à 27 pour permettre une impression par
ville et donc une meilleure présentation
-soit sur cette 2eme feuille je donne le nom de la ville et on va chercher
les données sur la 1ere feuille
soit encore mieux les impressions de cette 2eme feuille se font
automatiquement pour chaque ville individuellementJe ne sais pas si je
suis clair
merci de votre aide si vous pouviez me donner le principe et j'essayerais
d'adaper



Philippe
Le #20419151
bonjour
je vous remercie beaucoup pour cette réponse mais vous avez affaire à un
"nul" alors je ne saispas trop ou mettre ce programme et comment il s'active
mais encore merci

"Hervé"
Bonjour Philippe,

Un début à creuser (à mettre dans un module standard, adapter le nom des
feuilles et l'impression) :

Sub RechercheVille()

Dim Fe1 As Worksheet
Dim Fe2 As Worksheet
Dim Plage As Range
Dim PlageVille As Range
Dim Cel As Range
Dim I As Integer
Dim J As Integer
Dim Ligne As Integer
Dim Ville As String

'affiche une boîte de dialogue pour récupérer
'le nom de la ville (attention aux minuscules
'et majuscules)
Ville = InputBox("Quelle ville ?", "Ville.", "")

'défini les feuilles de travail
'feuille où sont stockées les données
Set Fe1 = Worksheets("Feuil1")

'feuille de destination
Set Fe2 = Worksheets("Feuil2")

'plage de recherche des noms de villes
Set PlageVille = Fe1.[B1:B115]

'plage de recherche des noms de villes si la liste
'doit évoluée
'----
'With Fe1
' Set PlageVille = .Range(.[B1], .[B65536].End(xlUp))
'End With
'----
'si un nom a été saisi, effectue la recherche et colle
'les données correspondantes dans la 2ème feuille
'en C20:M27
If Ville <> "" Then

Set Cel = PlageVille.Find(Ville, , xlValues)

If Not Cel Is Nothing Then

Ligne = Cel.Row

J = 19

For I = 1 To 88 Step 11

With Fe1
Set Plage = .Range(.Cells(Ligne, 12 + I), _
.Cells(Ligne, 22 + I))
End With

J = J + 1

Fe2.Range("C" & J).Resize(, 11).Value = Plage.Value

Next

'Impression de la feuille de destination
'aperçu avant impression
'----
'Fe2.PrintPreview
'----
'impression
Fe2.PrintOut

Else

MsgBox "La ville '" & Ville & "' n'existe pas dans" & _
" le tableau ou a été mal orthographiée !"

End If

End If

Set Cel = Nothing
Set Plage = Nothing
Set PlageVille = Nothing
Set Fe1 = Nothing

End Sub

Hervé.




"Philippe" news:
bonjour

j'ai 1 feuille excel avec 115 lignes pour lesquelles j'ai des données en
colonne de M à CV et en colonne B j'ai donc 115 noms de ville
je voudrais mettre les données sur une 2eme feuille mais avec les données
en colonne C à M sur ligne 20 à 27 pour permettre une impression par
ville et donc une meilleure présentation
-soit sur cette 2eme feuille je donne le nom de la ville et on va
chercher les données sur la 1ere feuille
soit encore mieux les impressions de cette 2eme feuille se font
automatiquement pour chaque ville individuellementJe ne sais pas si je
suis clair
merci de votre aide si vous pouviez me donner le principe et j'essayerais
d'adaper






Philippe
Le #20423491
Est-il possible d'avoir la liste des villes dans la boite de dialogue au
lieu de taper leurs noms ?
Merci

"Philippe"
bonjour
je vous remercie beaucoup pour cette réponse mais vous avez affaire à un
"nul" alors je ne saispas trop ou mettre ce programme et comment il
s'active mais encore merci

"Hervé"
Bonjour Philippe,

Un début à creuser (à mettre dans un module standard, adapter le nom des
feuilles et l'impression) :

Sub RechercheVille()

Dim Fe1 As Worksheet
Dim Fe2 As Worksheet
Dim Plage As Range
Dim PlageVille As Range
Dim Cel As Range
Dim I As Integer
Dim J As Integer
Dim Ligne As Integer
Dim Ville As String

'affiche une boîte de dialogue pour récupérer
'le nom de la ville (attention aux minuscules
'et majuscules)
Ville = InputBox("Quelle ville ?", "Ville.", "")

'défini les feuilles de travail
'feuille où sont stockées les données
Set Fe1 = Worksheets("Feuil1")

'feuille de destination
Set Fe2 = Worksheets("Feuil2")

'plage de recherche des noms de villes
Set PlageVille = Fe1.[B1:B115]

'plage de recherche des noms de villes si la liste
'doit évoluée
'----
'With Fe1
' Set PlageVille = .Range(.[B1], .[B65536].End(xlUp))
'End With
'----
'si un nom a été saisi, effectue la recherche et colle
'les données correspondantes dans la 2ème feuille
'en C20:M27
If Ville <> "" Then

Set Cel = PlageVille.Find(Ville, , xlValues)

If Not Cel Is Nothing Then

Ligne = Cel.Row

J = 19

For I = 1 To 88 Step 11

With Fe1
Set Plage = .Range(.Cells(Ligne, 12 + I), _
.Cells(Ligne, 22 + I))
End With

J = J + 1

Fe2.Range("C" & J).Resize(, 11).Value = Plage.Value

Next

'Impression de la feuille de destination
'aperçu avant impression
'----
'Fe2.PrintPreview
'----
'impression
Fe2.PrintOut

Else

MsgBox "La ville '" & Ville & "' n'existe pas dans" & _
" le tableau ou a été mal orthographiée !"

End If

End If

Set Cel = Nothing
Set Plage = Nothing
Set PlageVille = Nothing
Set Fe1 = Nothing

End Sub

Hervé.




"Philippe" news:
bonjour

j'ai 1 feuille excel avec 115 lignes pour lesquelles j'ai des données en
colonne de M à CV et en colonne B j'ai donc 115 noms de ville
je voudrais mettre les données sur une 2eme feuille mais avec les
données en colonne C à M sur ligne 20 à 27 pour permettre une
impression par ville et donc une meilleure présentation
-soit sur cette 2eme feuille je donne le nom de la ville et on va
chercher les données sur la 1ere feuille
soit encore mieux les impressions de cette 2eme feuille se font
automatiquement pour chaque ville individuellementJe ne sais pas si je
suis clair
merci de votre aide si vous pouviez me donner le principe et
j'essayerais d'adaper










Hervé
Le #20430421
Bonsoir Philippe,

Avec une InputBox tu ne peux pas avoir de liste déroulate, il te faut
utiliser un UserForm, pour cela, faire Alt+F11 pour être dans le VBE (Visual
Basic Editor) puis menu "Insertion" cliquer sur "UserForm". Dans la petite
boîte d'outils afficher à gauche, cliquer sur "Zone de liste modifiable"
(ComboBox) et la déposer sur l'UserForm en tirant de gauche à droite
(définir la taille voulue avec les poignées). Cliquer sur "Intitulé" et
procéder de la même manière si tu veux un titre au dessus du ComboBox en
paramétrant la propriété "Caption" dans la fenêtre "Propriétés" (en bas à
gauche l'Intitulé, ou Label, étant sélectionné sur l'UserForm). Ensuite,
coller le code ci-dessous (sauf la proc Afficher qui elle doit être
installée dans un module standard) dans le module de l'UserForm (pour
afficher le module, cliquer sur le bouton "Afficher le code" dans la fenêtre
"Projet - VBAProject" à gauche). Pour Excel 2007, dans le menu Développeur,
clique sur "Insérer" puis dans "Contrôles de Formulaire" clique sur "Bouton"
et trace le où cela te conviens et quand la boîte "Affecter une macro"
s'affiche, double-clique sur "Afficher", ensuite clique n'importe où dans ta
feuille afin de déselctionner le bouton puis clique enfin sur ce dernier
pour lancer la procédure d'impression. Pour les versions antérieures, si mes
souvenirs sont bons, cliquer sur la barre d'outils "Formulaire" pour avoir
le bouton.
Sache qu'il est possible d'ajouter un bouton dans une barre d'outils pour
afficher l'UserForm et seulement quand le classeur en question est actif
mais ça, c'est pour plus tard si ça t'intéresse ;o).

'A mettre dans le module de l'UserForm :
'----------
Private Sub UserForm_Activate()

Dim Fe1 As Worksheet
Dim PlageVille As Range
Dim I As Integer

'feuille où sont stockées les données
Set Fe1 = Worksheets("Feuil1")

'plage de recherche des noms de villes
Set PlageVille = Fe1.[B1:B115]

'plage de recherche des noms de villes si la liste
'doit évoluée
'----
'With Fe1
' Set PlageVille = .Range(.[B1], .[B65536].End(xlUp))
'End With
'----

'rempli le combobox
For I = 1 To PlageVille.Count
ComboBox1.AddItem PlageVille(I)
Next I

Set PlageVille = Nothing
Set Fe1 = Nothing

End Sub

Private Sub ComboBox1_Click()

Dim Fe1 As Worksheet
Dim Fe2 As Worksheet
Dim Plage As Range
Dim PlageVille As Range
Dim Cel As Range
Dim I As Integer
Dim J As Integer
Dim Ligne As Integer
Dim Ville As String

'récupère le nom de la ville
Ville = ComboBox1.Text

'défini les feuilles de travail
'feuille où sont stockées les données
Set Fe1 = Worksheets("Feuil1")

'feuille de destination
Set Fe2 = Worksheets("Feuil2")

'plage de recherche des noms de villes
Set PlageVille = Fe1.[B1:B115]

'demande confirmation
'(supprimer si pas nécessaire avec End If plus bas)
If MsgBox("Voulez-vous imprimer les valeurs de la ville '" & _
Ville & "' ?", vbYesNo, "Villes.") = vbYes Then

'récupère le numéro de ligne
Set Cel = PlageVille.Find(Ville, , xlValues)

Ligne = Cel.Row

J = 19

'colle les données correspondantes
'dans la 2ème feuille en C20:M27
For I = 1 To 88 Step 11

With Fe1
Set Plage = .Range(.Cells(Ligne, 12 + I), _
.Cells(Ligne, 22 + I))
End With

J = J + 1

Fe2.Range("C" & J).Resize(, 11).Value = Plage.Value

Next

'Impression de la feuille de destination
'aperçu avant impression
'----
'Fe2.PrintPreview
'----
'impression
Fe2.PrintOut

'(supprimer si confirmation pas nécessaire)
End If

Set Cel = Nothing
Set Plage = Nothing
Set PlageVille = Nothing
Set Fe1 = Nothing
Set Fe2 = Nothing

End Sub
'----------

'A mettre dans un module standard
'----------
Sub Afficher()
UserForm1.Show
End Sub
'----------

Hervé.


"Philippe" news:
Est-il possible d'avoir la liste des villes dans la boite de dialogue au
lieu de taper leurs noms ?
Merci

"Philippe"
bonjour
je vous remercie beaucoup pour cette réponse mais vous avez affaire à un
"nul" alors je ne saispas trop ou mettre ce programme et comment il
s'active mais encore merci

"Hervé"
Bonjour Philippe,

Un début à creuser (à mettre dans un module standard, adapter le nom des
feuilles et l'impression) :

Sub RechercheVille()

Dim Fe1 As Worksheet
Dim Fe2 As Worksheet
Dim Plage As Range
Dim PlageVille As Range
Dim Cel As Range
Dim I As Integer
Dim J As Integer
Dim Ligne As Integer
Dim Ville As String

'affiche une boîte de dialogue pour récupérer
'le nom de la ville (attention aux minuscules
'et majuscules)
Ville = InputBox("Quelle ville ?", "Ville.", "")

'défini les feuilles de travail
'feuille où sont stockées les données
Set Fe1 = Worksheets("Feuil1")

'feuille de destination
Set Fe2 = Worksheets("Feuil2")

'plage de recherche des noms de villes
Set PlageVille = Fe1.[B1:B115]

'plage de recherche des noms de villes si la liste
'doit évoluée
'----
'With Fe1
' Set PlageVille = .Range(.[B1], .[B65536].End(xlUp))
'End With
'----
'si un nom a été saisi, effectue la recherche et colle
'les données correspondantes dans la 2ème feuille
'en C20:M27
If Ville <> "" Then

Set Cel = PlageVille.Find(Ville, , xlValues)

If Not Cel Is Nothing Then

Ligne = Cel.Row

J = 19

For I = 1 To 88 Step 11

With Fe1
Set Plage = .Range(.Cells(Ligne, 12 + I), _
.Cells(Ligne, 22 + I))
End With

J = J + 1

Fe2.Range("C" & J).Resize(, 11).Value = Plage.Value

Next

'Impression de la feuille de destination
'aperçu avant impression
'----
'Fe2.PrintPreview
'----
'impression
Fe2.PrintOut

Else

MsgBox "La ville '" & Ville & "' n'existe pas dans" & _
" le tableau ou a été mal orthographiée !"

End If

End If

Set Cel = Nothing
Set Plage = Nothing
Set PlageVille = Nothing
Set Fe1 = Nothing

End Sub

Hervé.




"Philippe" news:
bonjour

j'ai 1 feuille excel avec 115 lignes pour lesquelles j'ai des données
en colonne de M à CV et en colonne B j'ai donc 115 noms de ville
je voudrais mettre les données sur une 2eme feuille mais avec les
données en colonne C à M sur ligne 20 à 27 pour permettre une
impression par ville et donc une meilleure présentation
-soit sur cette 2eme feuille je donne le nom de la ville et on va
chercher les données sur la 1ere feuille
soit encore mieux les impressions de cette 2eme feuille se font
automatiquement pour chaque ville individuellementJe ne sais pas si je
suis clair
merci de votre aide si vous pouviez me donner le principe et
j'essayerais d'adaper














Philippe
Le #20459391
bonjour Hervé

C'est presque parfait et les explications impeccables pour réaliser.
J'ai un petit soucis si je fais "apercu avant impression" car excel se
bloque completement et je dois sortir par fin de tache
Avec ce même principe puis-je aller chercher des infos dans une nouvelle
feuille que je pourrais ajouter sachant que les villes seraient les mêmes
cordialement
Phlippe

"Hervé"
Bonsoir Philippe,

Avec une InputBox tu ne peux pas avoir de liste déroulate, il te faut
utiliser un UserForm, pour cela, faire Alt+F11 pour être dans le VBE
(Visual Basic Editor) puis menu "Insertion" cliquer sur "UserForm". Dans
la petite boîte d'outils afficher à gauche, cliquer sur "Zone de liste
modifiable" (ComboBox) et la déposer sur l'UserForm en tirant de gauche à
droite (définir la taille voulue avec les poignées). Cliquer sur
"Intitulé" et procéder de la même manière si tu veux un titre au dessus du
ComboBox en paramétrant la propriété "Caption" dans la fenêtre
"Propriétés" (en bas à gauche l'Intitulé, ou Label, étant sélectionné sur
l'UserForm). Ensuite, coller le code ci-dessous (sauf la proc Afficher qui
elle doit être installée dans un module standard) dans le module de
l'UserForm (pour afficher le module, cliquer sur le bouton "Afficher le
code" dans la fenêtre "Projet - VBAProject" à gauche). Pour Excel 2007,
dans le menu Développeur, clique sur "Insérer" puis dans "Contrôles de
Formulaire" clique sur "Bouton" et trace le où cela te conviens et quand
la boîte "Affecter une macro" s'affiche, double-clique sur "Afficher",
ensuite clique n'importe où dans ta feuille afin de déselctionner le
bouton puis clique enfin sur ce dernier pour lancer la procédure
d'impression. Pour les versions antérieures, si mes souvenirs sont bons,
cliquer sur la barre d'outils "Formulaire" pour avoir le bouton.
Sache qu'il est possible d'ajouter un bouton dans une barre d'outils pour
afficher l'UserForm et seulement quand le classeur en question est actif
mais ça, c'est pour plus tard si ça t'intéresse ;o).

'A mettre dans le module de l'UserForm :
'----------
Private Sub UserForm_Activate()

Dim Fe1 As Worksheet
Dim PlageVille As Range
Dim I As Integer

'feuille où sont stockées les données
Set Fe1 = Worksheets("Feuil1")

'plage de recherche des noms de villes
Set PlageVille = Fe1.[B1:B115]

'plage de recherche des noms de villes si la liste
'doit évoluée
'----
'With Fe1
' Set PlageVille = .Range(.[B1], .[B65536].End(xlUp))
'End With
'----

'rempli le combobox
For I = 1 To PlageVille.Count
ComboBox1.AddItem PlageVille(I)
Next I

Set PlageVille = Nothing
Set Fe1 = Nothing

End Sub

Private Sub ComboBox1_Click()

Dim Fe1 As Worksheet
Dim Fe2 As Worksheet
Dim Plage As Range
Dim PlageVille As Range
Dim Cel As Range
Dim I As Integer
Dim J As Integer
Dim Ligne As Integer
Dim Ville As String

'récupère le nom de la ville
Ville = ComboBox1.Text

'défini les feuilles de travail
'feuille où sont stockées les données
Set Fe1 = Worksheets("Feuil1")

'feuille de destination
Set Fe2 = Worksheets("Feuil2")

'plage de recherche des noms de villes
Set PlageVille = Fe1.[B1:B115]

'demande confirmation
'(supprimer si pas nécessaire avec End If plus bas)
If MsgBox("Voulez-vous imprimer les valeurs de la ville '" & _
Ville & "' ?", vbYesNo, "Villes.") = vbYes Then

'récupère le numéro de ligne
Set Cel = PlageVille.Find(Ville, , xlValues)

Ligne = Cel.Row

J = 19

'colle les données correspondantes
'dans la 2ème feuille en C20:M27
For I = 1 To 88 Step 11

With Fe1
Set Plage = .Range(.Cells(Ligne, 12 + I), _
.Cells(Ligne, 22 + I))
End With

J = J + 1

Fe2.Range("C" & J).Resize(, 11).Value = Plage.Value

Next

'Impression de la feuille de destination
'aperçu avant impression
'----
'Fe2.PrintPreview
'----
'impression
Fe2.PrintOut

'(supprimer si confirmation pas nécessaire)
End If

Set Cel = Nothing
Set Plage = Nothing
Set PlageVille = Nothing
Set Fe1 = Nothing
Set Fe2 = Nothing

End Sub
'----------

'A mettre dans un module standard
'----------
Sub Afficher()
UserForm1.Show
End Sub
'----------

Hervé.


"Philippe" news:
Est-il possible d'avoir la liste des villes dans la boite de dialogue au
lieu de taper leurs noms ?
Merci

"Philippe"
bonjour
je vous remercie beaucoup pour cette réponse mais vous avez affaire à un
"nul" alors je ne saispas trop ou mettre ce programme et comment il
s'active mais encore merci

"Hervé"
Bonjour Philippe,

Un début à creuser (à mettre dans un module standard, adapter le nom
des feuilles et l'impression) :

Sub RechercheVille()

Dim Fe1 As Worksheet
Dim Fe2 As Worksheet
Dim Plage As Range
Dim PlageVille As Range
Dim Cel As Range
Dim I As Integer
Dim J As Integer
Dim Ligne As Integer
Dim Ville As String

'affiche une boîte de dialogue pour récupérer
'le nom de la ville (attention aux minuscules
'et majuscules)
Ville = InputBox("Quelle ville ?", "Ville.", "")

'défini les feuilles de travail
'feuille où sont stockées les données
Set Fe1 = Worksheets("Feuil1")

'feuille de destination
Set Fe2 = Worksheets("Feuil2")

'plage de recherche des noms de villes
Set PlageVille = Fe1.[B1:B115]

'plage de recherche des noms de villes si la liste
'doit évoluée
'----
'With Fe1
' Set PlageVille = .Range(.[B1], .[B65536].End(xlUp))
'End With
'----
'si un nom a été saisi, effectue la recherche et colle
'les données correspondantes dans la 2ème feuille
'en C20:M27
If Ville <> "" Then

Set Cel = PlageVille.Find(Ville, , xlValues)

If Not Cel Is Nothing Then

Ligne = Cel.Row

J = 19

For I = 1 To 88 Step 11

With Fe1
Set Plage = .Range(.Cells(Ligne, 12 + I), _
.Cells(Ligne, 22 + I))
End With

J = J + 1

Fe2.Range("C" & J).Resize(, 11).Value = Plage.Value

Next

'Impression de la feuille de destination
'aperçu avant impression
'----
'Fe2.PrintPreview
'----
'impression
Fe2.PrintOut

Else

MsgBox "La ville '" & Ville & "' n'existe pas dans" & _
" le tableau ou a été mal orthographiée !"

End If

End If

Set Cel = Nothing
Set Plage = Nothing
Set PlageVille = Nothing
Set Fe1 = Nothing

End Sub

Hervé.




"Philippe" news:
bonjour

j'ai 1 feuille excel avec 115 lignes pour lesquelles j'ai des données
en colonne de M à CV et en colonne B j'ai donc 115 noms de ville
je voudrais mettre les données sur une 2eme feuille mais avec les
données en colonne C à M sur ligne 20 à 27 pour permettre une
impression par ville et donc une meilleure présentation
-soit sur cette 2eme feuille je donne le nom de la ville et on va
chercher les données sur la 1ere feuille
soit encore mieux les impressions de cette 2eme feuille se font
automatiquement pour chaque ville individuellementJe ne sais pas si je
suis clair
merci de votre aide si vous pouviez me donner le principe et
j'essayerais d'adaper

















Publicité
Poster une réponse
Anonyme