Coup de main pour macro et report de données

Bonjour à tous,

Après avoir surfé et trouvé des solutions incognito sur ce site, je passe le cap et je m'inscris pour solliciter de l'aide.

Voilà, j'ai une macro qui fait ce que je souhaite mais elle est à 2 doigts de me procurer une crise d'épilepsie quand je l'execute.

L'idée du fichier est que sur la première feuille je réponds à des questions puis je valide et les réponses se reportent dans la compilation l'un à la suite des autres.

Lorsque j'exécute la macro celle ci clignote à cause de l'effacement des données.

J'ai essayé de mettre toutes les suppressions en fin de code mais après elle ne marche plus.

Je sèche complètement.

Avez vous une idée ou une solution à me proposer afin de rendre la validation du questionnaire transparente?

Je joins le fichier, cela sera plus parlant.

D'avance merci pour votre aide à tous, et bien sûr à charge de revanche

Vinno

12grillev2.xlsm (53.82 Ko)

Bonjour,

à tester,

Sub test()
Dim rng, i as integer
rng = Array("D6", "A1", "G6", "A1", "G13", "G15", "G17", "G19", "G21", "G23", "G25", "E9")
With Sheets("Compilation")
   N1 = .Cells(Rows.Count, 5).End(xlUp).Row + 1
    For i = LBound(rng) To UBound(rng)
      .Cells(N1, i + 5).Value = Sheets("Grille").Range(rng(i)).Value
    Next
End With
End Sub

bonjour et merci pour ta réponse.

Quand je lance ton test, j'ai un message d'erreur 6 Dépassement de capacité.

Je sais pas trop à quoi cela correspond, première fois que je le croise.

Je vais fouiner un peu pour voir si je peux en apprendre plus

Bonjour,

le message d'erreur se produit sur quel ligne ?

Re,

Sur cette ligne ci: .Cells(N1, i + 5).Value = Sheets("Grille").Range(rng(i)).Value

Tu penses qu'il y a une incidence au fait que je sois sut excel 2007 et que mon fichier a été créé au boulot sur le 2010?

Bonjour,

Une proposition à étudier.

Cdlt.

Option Explicit

Public Sub Saisie()
Dim ws As Worksheet, ws2 As Worksheet
Dim tbl, tbl2
Dim rw As Long, I As Long, k As Long
    Application.ScreenUpdating = False
    Set ws = Worksheets("Grille")
    Set ws2 = Worksheets("Compilation")
    rw = ws2.Cells(Rows.Count, "E").End(xlUp).Row + 1
    tbl = Array("D6", "G6", "E9", "G13", "G15", "G17", "G19", "G21", "G23", "G25")
    tbl2 = Array("E", "G", "P", "I", "J", "K", "L", "M", "N", "O")
    For I = LBound(tbl) To UBound(tbl)
        With ws2
            k = k + 1
            .Range(tbl2(I) & rw).Value = ws.Range(tbl(I)).Value
        End With
    Next I
    Range("D6,G6,E9,G13,G15,G17,G19,G21,G23,G25").ClearContents
End Sub

bonjour,

Une autre version sans Array peut-être plus compréhensible pour un débutant :

Sub Saisie()
Dim x, a, AW As Worksheet
Set AW = ActiveSheet
With Sheets("Compilation")
   x = .Range("E65536").End(xlUp).Row + 1
   a = AW.Range("D6")
   .Range("E" & x) = a
   a = AW.Range("G6")
      .Range("G" & x) = a
   a = AW.Range("E9")
      .Range("P" & x) = a
   a = AW.Range("G13")
      .Range("I" & x) = a
   a = AW.Range("G15")
      .Range("J" & x) = a
   a = AW.Range("G17")
      .Range("K" & x) = a
   a = AW.Range("G19")
      .Range("L" & x) = a
   a = AW.Range("G21")
      .Range("M" & x) = a
   a = AW.Range("G23")
      .Range("N" & x) = a
   a = AW.Range("G25")
      .Range("O" & x) = a
End With
Sheets("Grille").Range("D6,G6,E9,G13,G15,G17,G19,G21,G23,G25").ClearContents
 End Sub

A+

Bonjour, à tous,

Sur cette ligne ci: .Cells(N1, i + 5).Value = Sheets("Grille").Range(rng(i)).Value

Tu penses qu'il y a une incidence au fait que je sois sut excel 2007 et que mon fichier a été créé au boulot sur le 2010?

je ne crois pas,

lorsque le l'erreur se produit, peut-tu déboguer et vérifier la valeur des variables N1 et rng(i) ?

Merci à tous!!

Vous êtes super efficace!! mon problème a été réglé en un rien de temps.

Je m'intéresse depuis peu au code vba et votre talent me laisse sans voix

@sabV, je viens de tester à nouveau et ça marche, bizarre... mais en tout cas tu avais trouvé la solution.

Un grand merci à tous pour votre aide.

Rechercher des sujets similaires à "coup main macro report donnees"