Pb compatibilité de VBA 2010 sous excel 2016

Celysi

XLDnaute Nouveau
Bonjour à tous,
j'ai monté il y a quelques années sous excel 2010 un tableau qui fonctionnait, pour mon travail.
Aujourd'hui je suis sous excel 2016 et n'arrive plus à le faire fonctionner.
Est ce qu'un des experts, que vous êtes tous, peut y jeter un coup d'oeil.
Je le rempli avec des données sur la 1ere feuille et quand je clique sur validation tout se recopie sur la feuille suivante, mais cela ne fonctionne plus.

Merci beaucoup
 

Pièces jointes

  • Commande Portes Original.xls
    461 KB · Affichages: 67

Yurperqod

XLDnaute Occasionnel
Bonjour le forum

Si j'ai bien compris ce que doit faire la macro2, alors voici ma proposition en partant de la macro2 d'origine.
VB:
Sub Macro2()
Dim DerLigne As Long, DerCol As Long, col As Long
Application.ScreenUpdating = False
DerLigne = Sheets("formulaire").Cells(Rows.Count, 2).End(xlUp).Row
DerCol = Sheets("formulaire").Cells(DerLigne, Columns.Count).End(xlToLeft).Column
For col = 2 To DerCol
Sheets("formulaire").Cells(2, col).Resize(DerLigne - 1).Copy
Sheets("récapitulatif").Cells(Rows.Count, 1).End(xlUp)(2).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Next
End Sub
 

Celysi

XLDnaute Nouveau
Bonjour Celysi le forum
si tu n'expliques pas un minimum l'utilisation c'est pas facile de te répondre.
Qu'est-ce qui ne marche pas???
a+
Papou:)

Bonjour Papou,
Quand je clique sur le bouton validation un message apparait de VB pour un débogage (Photo jointe).
Les cellules jaunes des colonnes B à G doivent être copiées et collées dans la feuille récapitulatif, or cela bugge au moment de la copie du la colle D, cela fonctionne pour 2 colonnes alors qu'avant cela fonctionner pour toutes les colonnes
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    36.5 KB · Affichages: 61

Celysi

XLDnaute Nouveau
Bonjour le forum

Si j'ai bien compris ce que doit faire la macro2, alors voici ma proposition en partant de la macro2 d'origine.
VB:
Sub Macro2()
Dim DerLigne As Long, DerCol As Long, col As Long
Application.ScreenUpdating = False
DerLigne = Sheets("formulaire").Cells(Rows.Count, 2).End(xlUp).Row
DerCol = Sheets("formulaire").Cells(DerLigne, Columns.Count).End(xlToLeft).Column
For col = 2 To DerCol
Sheets("formulaire").Cells(2, col).Resize(DerLigne - 1).Copy
Sheets("récapitulatif").Cells(Rows.Count, 1).End(xlUp)(2).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Next
End Sub


Bonjour Yurperqod,
Super cela fonctionne, le code ne ressemble plus beaucoup à l'original. VBA a évolué il va falloir que je m'y repenche dessus.
Je te remercie, ainsi que Papou et ceux qui se sont pencher sur mon pb.
 

Yurperqod

XLDnaute Occasionnel
Si tu préfères ta macro, est-ce qu'elle fonctionne si tu la modifies comme ca?
VB:
Sub Macro2()
Dim DerLigne As Range, col As Long
Application.ScreenUpdating = False
For col = 2 To 7
If Sheets("formulaire").Cells(32, col) <> "" Then
Sheets("formulaire").Range(Cells(2, col), Cells(32, col)).Copy
Set DerLigne = Sheets("récapitulatif").Range("$A$65536").End(xlUp).Offset(1, 0)
DerLigne.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Transpose:=True
End If
Next col
'Sheets("formulaire").Range("b4,B7,B17,B32,c32,d32,e32,f32,g32").ClearContents
End Sub
Sur mon ordinateur (avec Excel 2010), elle fonctionne.

Et si la dernière ligne de ton tableau sera toujours la ligne 32, on peut écrire ma macro comme ca aussi
VB:
Sub Macro2()
Dim DerCol As Long, col As Long
Application.ScreenUpdating = False
DerCol = Sheets("formulaire").Cells(32, Columns.Count).End(xlToLeft).Column
For col = 2 To DerCol
Sheets("formulaire").Cells(2, col).Resize(31).Copy
Sheets("récapitulatif").Cells(Rows.Count, 1).End(xlUp)(2).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Next
End Sub
 
Dernière édition:

Celysi

XLDnaute Nouveau
Si tu préfères ta macro, est-ce qu'elle fonctionne si tu la modifies comme ca?
VB:
Sub Macro2()
Dim DerLigne As Range, col As Long
Application.ScreenUpdating = False
For col = 2 To 7
If Sheets("formulaire").Cells(32, col) <> "" Then
Sheets("formulaire").Range(Cells(2, col), Cells(32, col)).Copy
Set DerLigne = Sheets("récapitulatif").Range("$A$65536").End(xlUp).Offset(1, 0)
DerLigne.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Transpose:=True
End If
Next col
'Sheets("formulaire").Range("b4,B7,B17,B32,c32,d32,e32,f32,g32").ClearContents
End Sub
Sur mon ordinateur (avec Excel 2010), elle fonctionne.


Je ne préfère pas ma macro, je l'avais écrite en fouillant sur le forum.
Je viens de faire un essai avec celle de ci-dessus mais cela ne fonctionne pas .
L'autre fonctione très bien, je l'adopte, elle fait ce que j'attends d'elle.

merci encore
 

Discussions similaires

Réponses
21
Affichages
1 K

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux